Настраиваемые поля в конечном счету

Тема в разделе "Обо всём", создана пользователем Jess23, 21 дек 2016.

  1. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Доброго времени.

    Подскажите, как вывести пользовательские поля ("Настраиваемые поля" в зависимости от перевода, файл который за них отвечает sale/custom_field) в конечном счете который можно распечатать, то есть в файле invoice?

    Создал дополнительное поле при доставке и хочу его выводить в счете... Как это реализовать?
     
  2. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Достать єти поля в генераторе счета
     
    biljvluojinjbhj и Jess23 нравится это.
  3. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Верно... они же описаны в одном контроллере, все что нужно это просто вывести в нужном месте. Спасибо за наводку.
     
  4. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Не получается, вывожу таким образом:

    PHP:
    <?php foreach ($shipping_custom_fields as $custom_field) { ?>
    <tr data-sort="<?php echo $custom_field['sort_order'] + 1?>">
    <b><?php echo $custom_field['name']; ?>:</b>
    <b><?php echo $custom_field['value']; ?></b>
     </td>
    В логах выдает: Undefined variable: shipping_custom_fields... Не могу понять в какой области его нужно описать именно для sale/order/invoice
     
  5. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    А как вы получили
    $shipping_custom_fields
     
    biljvluojinjbhj нравится это.
  6. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    В файле order_info.tpl описан этот фрагмент.... Его контроллер order.php, и этот же контроллер, если я правильно все понял, привязан к order_invoice.tpl... В итоге я подумал, если контроллер order.php служит как для order_invoice.tpl так и для order_info.tpl, то почему же просто не вывести по аналогии нужные мне поля... Логично, но при такой конструкции что-то не так... Значит, в файле order.php есть часть которая отвечает именно за order_invoice.tpl, вот нужно найти эту часть и добавить в обработку shipping_custom_fields.

    Если я все правильно понял...
     
  7. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Да, все верно
    но это не беда

    invoice()

    Код:
    $data['orders'][] = array(
    'payment_custom_field' => $order_info['payment_custom_field'],
    'shipping_custom_field' => $order_info['shipping_custom_field'],
     
    biljvluojinjbhj нравится это.
  8. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Всеравно не выводит... лог:

    2016-12-21 22:08:07 - PHP Notice: Undefined variable: custom_field in admin/view/template/sale/order_invoice.tpl on line 60
    2016-12-21 22:08:07 - PHP Notice: Undefined variable: custom_field in admin/view/template/sale/order_invoice.tpl on line 61
    2016-12-21 22:08:07 - PHP Notice: Undefined variable: shipping_custom_fields in admin/view/template/sale/order_invoice.tpl on line 62
    2016-12-21 22:08:07 - PHP Warning: Invalid argument supplied for foreach() in admin/view/template/sale/order_invoice.tpl on line 62
     
  9. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
  10. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Весь кэш чистил... Может ещё есть варианты?...
     
  11. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    покажите код из invoice()

    посмотрите есть ли изменения в модифицированном файле
     
    biljvluojinjbhj нравится это.
  12. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Весь код из invoice() не влазит. Покажу только фрагмент куда вставляю:

    PHP:
                    foreach ($totals as $total) {
                        
    $total_data[] = array(
                            
    'title' => $total['title'],
                            
    'text'  => $this->currency->format($total['value'], $order_info['currency_code'], $order_info['currency_value']),
                        );
                    }

                    
    $data['orders'][] = array(
                        
    'order_id'             => $order_id,
                        
    'invoice_no'         => $invoice_no,
                        
    'date_added'         => date($this->language->get('date_format_short'), strtotime($order_info['date_added'])),
                        
    'store_name'         => $order_info['store_name'],
                        
    'store_url'          => rtrim($order_info['store_url'], '/'),
                        
    'store_address'      => nl2br($store_address),
                        
    'store_email'        => $store_email,
                        
    'store_telephone'    => $store_telephone,
                        
    'store_fax'          => $store_fax,
                        
    'email'              => $order_info['email'],
                        
    'telephone'          => $order_info['telephone'],
                        
    'shipping_address'   => $shipping_address,
                        
    'shipping_method'    => $order_info['shipping_method'],
                        
    'payment_address'    => $payment_address,
                        
    'payment_method'     => $order_info['payment_method'],
                        
    'product'            => $product_data,
                        
    'voucher'            => $voucher_data,
                        
    'total'              => $total_data,

                        
    'payment_custom_field' => $order_info['payment_custom_field'],
                        
    'shipping_custom_field' => $order_info['shipping_custom_field'],

                        
    'comment'            => nl2br($order_info['comment'])
                    );
                }
            }

            
    $this->response->setOutput($this->load->view('sale/order_invoice.tpl'$data));
        }
    Посмотрел, нету ни одного модификатора который затрагивает этот файл...
     
  13. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Внутри function info() есть такой фрагмент, строка у меня примерно 1087.

    PHP:
                // Custom Fields
                
    $this->load->model('sale/custom_field');

                
    $data['account_custom_fields'] = array();

                
    $custom_fields $this->model_sale_custom_field->getCustomFields();

                foreach (
    $custom_fields as $custom_field) {
                    if (
    $custom_field['location'] == 'account' && isset($order_info['custom_field'][$custom_field['custom_field_id']])) {
                        if (
    $custom_field['type'] == 'select' || $custom_field['type'] == 'radio') {
                            
    $custom_field_value_info $this->model_sale_custom_field->getCustomFieldValue($order_info['custom_field'][$custom_field['custom_field_id']]);

                            if (
    $custom_field_value_info) {
                                
    $data['account_custom_fields'][] = array(
                                    
    'name'  => $custom_field['name'],
                                    
    'value' => $custom_field_value_info['name']
                                );
                            }
                        }

                        if (
    $custom_field['type'] == 'checkbox' && is_array($order_info['custom_field'][$custom_field['custom_field_id']])) {
                            foreach (
    $order_info['custom_field'][$custom_field['custom_field_id']] as $custom_field_value_id) {
                                
    $custom_field_value_info $this->model_sale_custom_field->getCustomFieldValue($custom_field_value_id);

                                if (
    $custom_field_value_info) {
                                    
    $data['account_custom_fields'][] = array(
                                        
    'name'  => $custom_field['name'],
                                        
    'value' => $custom_field_value_info['name']
                                    );
                                }
                            }
                        }

                        if (
    $custom_field['type'] == 'text' || $custom_field['type'] == 'textarea' || $custom_field['type'] == 'file' || $custom_field['type'] == 'date' || $custom_field['type'] == 'datetime' || $custom_field['type'] == 'time') {
                            
    $data['account_custom_fields'][] = array(
                                
    'name'  => $custom_field['name'],
                                
    'value' => $order_info['custom_field'][$custom_field['custom_field_id']]
                            );
                        }

                        if (
    $custom_field['type'] == 'file') {
                            
    $upload_info $this->model_tool_upload->getUploadByCode($order_info['custom_field'][$custom_field['custom_field_id']]);

                            if (
    $upload_info) {
                                
    $data['account_custom_fields'][] = array(
                                    
    'name'  => $custom_field['name'],
                                    
    'value' => $upload_info['name']
                                );
                            }
                        }
                    }
                }
     
  14. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    так вы ж неправильно готовите

    Код:
    <?php foreach ($order['shipping_custom_fields'] as $custom_field) { ?>
    <tr data-sort="<?php echo $custom_field['sort_order'] + 1; ?>">
    <b><?php echo $custom_field['name']; ?>:</b>
    <b><?php echo $custom_field['value']; ?></b>
     </td>
    
     
    biljvluojinjbhj нравится это.
  15. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Я не могу понять что именно здесь не так?
     
  16. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
  17. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Хм, не сильно ясна картина, я даже без проверки вывожу таким образом:
    <?php echo $custom_field['name']; ?> : <?php echo $custom_field['value']; ?>

    Но всеравно никакого значения не получаю на выходе кроме двоеточия
     
  18. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Что все равно?
    Ошибка пропала?
    Вы код сравнили?
     
    biljvluojinjbhj нравится это.
  19. Jess23

    Jess23 Пользователь

    Сообщения:
    119
    Симпатии:
    14
    Ничего не изменилось, на выходе не выводятся кастомные поля. Код ваш подставлял. Ошибка осталась.
     
  20. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    Как может быть ошибка
    Если массив не пустой , то попадаем в это цикл

    А какие ошибки?
     
    biljvluojinjbhj нравится это.