Безналичная оплата от юридического лица

#
Безналичная оплата от юридического лица
Подскажите Безналичная оплата от юридического лица в версии Халява так и должен работать, что при заполнении покупки на этапе "Ваш заказ оформлен" и выборе " бланк счета" результат "В корзине нет ни одного товара.

Для оформления заказа добавьте товар в корзину."

Обработчик взят с демо сайта

<?php
/* Безналичная оплата от юридического лица */
class system_of_pay_handler
{
   /**
    * Метод, запускающий выполнение обработчика
    *
    */
   function Execute()
   {
      /* Обработчик формы оплаты "Оплата при получении" */

      $shop = & singleton('shop';
      
      /* ID платежной системы берем из сессии */
      $system_of_pay_id = to_int($_SESSION['system_of_pay_id']);
      $row_system_of_pay = $shop->GetSystemOfPay($system_of_pay_id);
      
      if ($row_system_of_pay)
      {
         $shop_id = $row_system_of_pay['shop_shops_id'];
      }
      else
      {
         return false;
      }
      
      /* Получаем id текущего пользователя сайта */
      if (class_exists('SiteUsers')
      {
         /* Получаем id текущего пользователя сайта */
         $SiteUsers = & singleton('SiteUsers';
         $site_users_id = $SiteUsers->GetCurrentSiteUser();
      }
      else
      {
         $site_users_id = false;
      }

      // статус платежа, по умолчанию 0
      $order_row['status_of_pay'] = 0 ;

      // дата платежа, по умолчанию пустая строка
      $order_row['date_of_pay'] = '';

      $order_row['description'] = to_str($_SESSION['description']);
      
      // описание и системная информация, по умолчанию пустая строка
      if (to_str($_SESSION['shop_coupon_text']) != ''
      {
         $order_row['description'] .= "Купон на скидку: ".to_str($_SESSION['shop_coupon_text'])."\n";
      }

      if (!isset($_SESSION['last_order_id']))
      {
         $_SESSION['last_order_id'] = 0;
      }
      
      // Если заказ еще не был оформлен
      if ($_SESSION['last_order_id'] == 0)
      {
         // Оформляем заказ
         $order_id = $shop->ProcessOrder($shop_id, $site_users_id, $system_of_pay_id, $order_row);
      }
      else
      {
         $order_id = $_SESSION['last_order_id'];
      }

      if ($order_id > 0)
      {
         if (!class_exists('SiteUsers')
         {
            /* Класс пользователей сайта не существует, дописываем информацию о заказчике
            в поле shop_order_description из текущей сессии */
            if ($order_row)
            {
               /* Описание заказчика */
               $order_row['description'] .= "Информация о заказчике:\n"
               ."Имя: ".to_str($_SESSION['site_users_name'])."\n"
               ."Фамилия: ".to_str($_SESSION['site_users_surname'])."\n"
               ."Отчество: ".to_str($_SESSION['site_users_patronymic'])."\n"
               ."E-Mail: ".to_str($_SESSION['site_users_email'])."\n"
               ."Телефон: ".to_str($_SESSION['site_users_phone'])."\n"
               ."Факс: ".to_str($_SESSION['site_users_fax'])."\n"
               ."Адрес: ".to_str($_SESSION['full_address'])."\n";
               
               /* Дополнительная информация о заказе */
               $order_row['system_information'] = to_str($_SESSION['system_information']);   

               /* Обязательно добавляем идентификатор! */
               $order_row['id'] = $order_id;

               $shop->InsertOrder($order_row);
            }
         }

         $order_row = $shop->GetOrder($order_id);
         
         /* Формируем XML */
         $xmlData = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
         $xmlData .= '<document_list>'."\n";

         /* Ссылака на версию для печати */
         $shop_row = $shop->GetShop($shop_id);
         if ($shop_row)
         {
            /* Получаем путь к магазину */
            $Structure = & singleton('Structure';
            
            $shop_path = "/".$Structure->GetStructurePath($shop_row['structure_id'], 0);
            $shop_path .= "cart/print/{$order_row['shop_order_guid']}/";
            $xmlData .= "<print_link>".$shop_path."</print_link>";
         }

         $xmlData .= $shop->GetXmlForOrder($order_id, false, true);
         $xmlData .= $shop->GetXmlForItemsOrder($order_id);
         $xmlData .= '</document_list>'."\n";

         $xsl = new xsl();
         echo $xsl->build($xmlData, 'ОплатаБезналичнаяОтЮрЛица';

         if ($_SESSION['last_order_id'] == 0)
         {
            $structure = & singleton('Structure';
            $structure_row = $structure->GetStructureItem(to_int($shop_row['structure_id']));

            $lib = new lib();
            $LA = $lib->LoadLibPropertiesValue(to_int($structure_row['lib_id']), to_int($structure_row['structure_id']));

            $date_str = date("d.m.Y H:i:s";

            if (trim(to_str($order_row['shop_order_account_number'])) != ''
            {
               $shop_order_account_number = trim(to_str($order_row['shop_order_account_number']));
            }
            else
            {
               $shop_order_account_number = $order_id;
            }
            
            /* Отправляем письмо заказчику */
            $shop->SendMailAboutOrder($shop_id,
            $order_id,
            $site_users_id,
            to_str($LA['xsl_letter_to_admin']),
            to_str($LA['xsl_letter_to_user']),
            $order_row['shop_order_users_email'],
            array('admin-content-type' => 'html',
            'user-content-type' => 'html',
            'admin-subject' => sprintf($GLOBALS['MSG_shops']['shop_order_admin_subject'], $shop_order_account_number, $shop_row['shop_shops_name'], $date_str),
            'user-subject' => sprintf($GLOBALS['MSG_shops']['shop_order_user_subject'], $shop_order_account_number, $shop_row['shop_shops_name'], $date_str),
            'email_from_admin' => $order_row['shop_order_users_email']));

            $this->MailOrder($order_id);
         }
         
         // Сохраняем ID последнего оформленного заказа ТОЛЬКО ПОСЛЕ ОТПРАВКИ ПИСЬМА
         $_SESSION['last_order_id'] = $order_id;
      }
      else
      {
         switch ($order_id)
         {
            case -1:
               {
                  ?><div id="error">Ошибка вставки заказа в базу данных. Обратитесь к администратору.</div><?php
                  break;
               }
            case -2:
               {
                  ?><div id="error">Ошибка - не найден магазин. Обратитесь к администратору.</div><?php
                  break;
               }
            case -3:
               {
                  ?><div id="error">Ошибка - корзина пуста. Добавьте товар в корзину и оформите заказ.</div><?php
                  break;
               }
         }
      }
   }

   /**
    * Метод для отправки письма со счетом.
    *
    * @param int $order_id идентификатор заказа
    */
   function MailOrder($order_id)
   {
      $shop = & singleton('shop';

      /* Информация о заказе */
      $order_row = $shop->GetOrder($order_id);
      if (!$order_row)
      {
         return false;
      }

      /* Информация о магазине */
      $shop_row = $shop->GetShop($order_row['shop_shops_id']);
      if (!$shop_row)
      {
         return false;
      }

      ob_start();
      $this->PrintOrder($order_id);
      $blank = ob_get_clean();

      // Добавляем переводы строк после тегов.
      $blank = str_replace(">", ">\n", $blank);

      $order_row = $shop->GetOrder($order_id);

      $subject = 'Банковский счет';

      $kernel = & singleton('kernel';
      $kernel->SendMailWithFile(trim(to_str($order_row['shop_order_users_email'])),
      $shop_row['shop_shops_admin_mail'], $subject, $blank, array(), 'text/html';
   }

   /**
    * Метод для отображения формы заказа для печати.
    *
    * @param int $order_id идентификатор заказа
    */
   function PrintOrder($order_id)
   {
      $shop = & singleton('shop';

      /* Информация о заказе */
      $order_row = $shop->GetOrder($order_id);
      if (!$order_row)
      {
         return false;
      }

      /* Информация о магазине */
      $shop_row = $shop->GetShop($order_row['shop_shops_id']);
      if (!$shop_row)
      {
         return false;
      }

      /* Формируем XML */
      $xmlData = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
      $xmlData .= "<print_version>\n";
      $xmlData .= $shop->GenXml4Company($shop_row['shop_company_id']);
      $xmlData .= $shop->GetXmlForOrder(0, $order_row, true);
      $xmlData .= "</print_version>\n";

      $xsl = new xsl();
      $blank = $xsl->build($xmlData, 'БанковскийСчет';
      echo $blank;
   }

   /**
    * Изменение статуса заказа. Позволяет пользователю внедрять собственные
    * обработчики при изменении статуса.
    *
    * @param array $param массив атрибутов
    * - $param['shop_order_id'] идентификатор заказа
    * - $param['prev_order_row'] информация о предыдущем состоянии заказа (доступно не всегда)
    * - $param['action'] выполняемое действие над заказом, может принимать значения:
    * edit (редактирование заказа), cancel (отмена заказа),
    * status (изменение статуса заказа), delete (удаление заказа),
    * edit_item (редактирование товара в заказе), delete_item (удаление товара в заказе)
    */
   function ChangeStatus($param = array())
   {
      // Если произошло изменение статуса или
      if (isset($param['action']) && in_array($param['action'], array('status', 'edit'))
      {
         $shop_order_id = to_int($param['shop_order_id']);

         $shop = & singleton('shop';

         $order_row = $shop->GetOrder($shop_order_id);

         // Получаем информацию о магазине
         $shop_id = to_int($order_row['shop_shops_id']);

         $shop_row = $shop->GetShop($shop_id);

         $structure = & singleton('Structure';
         $structure_row = $structure->GetStructureItem(to_int($shop_row['structure_id']));

         $lib = new lib();
         $LA = $lib->LoadLibPropertiesValue(to_int($structure_row['lib_id']), to_int($structure_row['structure_id']));

         if ($order_row)
         {
            $DateClass = new DateClass();
            $date_str = $DateClass->datetime_format($order_row['shop_order_date_time']);
         }
         else
         {
            $date_str = '';
         }

         // Если предыдущий статус заказа был 1, то меняем тему на подтверждение
         if (to_int($order_row['shop_order_status_of_pay']) == 1)
         {
            $admin_subject = $GLOBALS['MSG_shops']['shop_order_confirm_admin_subject'];
            $user_subject = $GLOBALS['MSG_shops']['shop_order_confirm_user_subject'];
         }
         else
         {
            $admin_subject = $GLOBALS['MSG_shops']['shop_order_admin_subject'];
            $user_subject = $GLOBALS['MSG_shops']['shop_order_user_subject'];
         }

         $not_paid = isset($param['prev_order_row']) && $param['prev_order_row']['shop_order_status_of_pay'] == 0;
         
         // Письмо отправляем только при установке статуса активности для заказа
         if (to_int($order_row['shop_order_status_of_pay']) == 1 && $not_paid)
         {
            if (trim(to_str($order_row['shop_order_account_number'])) != ''
            {
               $shop_order_account_number = trim(to_str($order_row['shop_order_account_number']));
            }
            else
            {
               $shop_order_account_number = $shop_order_id;
            }
            
            /* Отправляем письмо заказчику */
            $shop->SendMailAboutOrder($shop_id,
            $shop_order_id,
            $order_row['site_users_id'],
            to_str($LA['xsl_letter_to_admin']),
            to_str($LA['xsl_letter_to_user']),
            $order_row['shop_order_users_email'],
            array('admin-content-type' => 'html',
            'user-content-type' => 'html',
            'admin-subject' => sprintf($admin_subject, $shop_order_account_number, $shop_row['shop_shops_name'], $date_str),
            'user-subject' => sprintf($user_subject, $shop_order_account_number, $shop_row['shop_shops_name'], $date_str),
            'email_from_admin' => $order_row['shop_order_users_email']));
         }
      }
   }
}
?>
#
Re: Безналичная оплата от юридического лица
qwazzzzzz, что-то мне подсказывает, что у вас в структуре сайта просто нету узла /print/ внутри узла /cart/  
Посмотрите, как сделано на демо-сайте, и сделайте у себя по аналогии.
Заказов не беру. Консультирую редко.
#
Re: Безналичная оплата от юридического лица
Я сделал как на сайте и при попытке перехода по ссылке просто открывается данный товар в каталоге и никакой ни квитанции ни счета
Авторизация