Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Як приєднати файл (ТТН) до замовлення на етапі оформлення кошика? (ocStore)


Recommended Posts

Доброго дня.

 

Сам файл завантажується і його id отримуємо скриптом:

 

\catalog\view\theme\oct_deals\template\checkout\oct_smartcheckout\customer_fields.twig

 

<script type="text/javascript"><!--
    $('button[id^=\'button-upload-ttn-file2\']').on('click', function() {
        var node = this;

        $('#form-upload').remove();

        $('body').prepend('<form enctype="multipart/form-data" id="form-upload" style="display: none;"><input type="file" name="file" /></form>');

        $('#form-upload input[name=\'file\']').trigger('click');

        timer = setInterval(function() {
            if ($('#form-upload input[name=\'file\']').val() != '') {
                clearInterval(timer);

                $.ajax({
                    url: 'index.php?route=tool/upload',
                    type: 'post',
                    dataType: 'json',
                    data: new FormData($('#form-upload')[0]),
                    cache: false,
                    contentType: false,
                    processData: false,
                    beforeSend: function() {
                        $(node).button('loading');
                    },
                    complete: function() {
                        $(node).button('reset');
                    },
                    success: function(json) {
                        $(node).parent().find('.text-danger').remove();

                        if (json['error']) {
                            $(node).parent().find('input').after('<div class="text-danger">' + json['error'] + '</div>');
                        }

                        if (json['success']) {
                            alert(json['success']);
                            $(node).parent().find('input').attr('value', json['code']);
                            $(node).parent().find('input[name=custom_2]').attr('value', json['photo']);
                            $(node).parent().find('input[name=custom_2_2]').attr('value', json['photo']);
                            document.getElementById("demo").innerHTML = '<label class="form-check-label d-flex align-items-center" for="newAddressCheckbox">Файл завантажено</label>';
                        }
                    },
                    error: function(xhr, ajaxOptions, thrownError) {
                        alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
                    }
                });
            }
        }, 500);
    });
//--></script>

 

Далі мені потрібно шлях до збереженого файлу, або, хоча б, його код, положити (додати до існуючої) в примітку до замовлення і зберегти в базі сайту. Щоб, в подальшому, менеджери в себе в 1С, могли цей файл завантажити по посиланню і роздрукувати.

 

Так от… Дайте напрямок де дивитися подію «збереження вмісту кошику як замовлення»…

 

А семе де дивитися обробку події кнопки:

<button type="button" class="button button-primary br-7 fsz-14 fw-400 w-100" id="button-go">
	<span class="button-text">Оформити замовлення</span>
</button>

 

Дякую.
 

Змінено користувачем KKGor
Надіслати
Поділитися на інших сайтах


  • KKGor changed the title to Як приєднати файл (ТТН) до замовлення на етапі оформлення кошика? (ocStore)

... Ніби найшов...

\catalog\view\theme\oct_deals\template\checkout\oct_smartcheckout\smartcheckout.twig

 

Пробую розібратись...

 

document.getElementById('button-go').addEventListener('click', function () {
        let data = $(
            '.oct-checkout input[type=\'text\'], .oct-checkout input[type=\'tel\'], .oct-checkout input[type=\'date\'], .oct-checkout input[type=\'datetime-local\'], .oct-checkout input[type=\'time\'], .oct-checkout input[type=\'password\'], .oct-checkout input[type=\'hidden\'], .oct-checkout input[name=\'custom_2\'], .oct-checkout input[type=\'checkbox\']:checked, .oct-checkout input[type=\'radio\']:checked, .oct-checkout textarea, .oct-checkout select'
            ).serialize();
        data += '&_shipping_method=' + $('.oct-checkout input[name=\'shipping_method\']:checked').prop('title') +
            '&_payment_method=' + $('.oct-checkout input[name=\'payment_method\']:checked').prop('title');

        $.ajax({
            url: 'index.php?route=checkout/oct_smartcheckout/validateForm',
            type: 'post',
            data: data,
            dataType: 'json',
            beforeSend: function () {
                $('#button-go').button('loading');
                masked('body', true);

                $('#button-go').data('original-content', $('#button-go').html());
			    $('#button-go').html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').prop('disabled', true);
            },
            complete: function () {
                $('#button-go').button('reset');
                masked('body', false);

                setTimeout(function () {
                    $('#button-go').html($('#button-go').data('original-content')).prop('disabled', false);
                }, 600);
            },
            success: function (json) {
                $('.register_block input, .register_block select').parent().removeClass('error_style');
                masked('body', false);

                if (json['redirect']) {
                    location = json['redirect'];
                } else if (json['error']) {

                    error = true;

                    if (json['error']['warning_agree']) {
                        $('#checkoutCheckbox').addClass('error_style');
                    }

                    if (json['error']['shipping_warning']) {
                        scrollToFreeShipping();
                    }

                    let errorMessages = '';

                    for (let i in json['error']) {
                        errorMessages += '<p class="mb-2">' + json['error'][i] + '</p>\n';
                        if (document.querySelector('.oct-checkout .form-control[name="' + i + '"]')) {
                            document.querySelector('.oct-checkout .form-control[name="' + i + '"]').classList.add('error_style');
                        }
                    }

                    scNotify('danger', errorMessages);
                    scrollToItem('.error_style');

                } else {
                    error = false;
                    $(".oct-fastorder-payment").html(json.output);

                    const baseSelector = '.oct-fastorder-payment';
                    const selectors = `${baseSelector} h2, ${baseSelector} legend, ${baseSelector} fieldset, ${baseSelector} p, ${baseSelector} form`;
                    const clickSelectors = `${baseSelector} input[type=submit], ${baseSelector} input[type=button], ${baseSelector} button, ${baseSelector} a, ${baseSelector} .btn-primary, ${baseSelector} #button-confirm`;
                    const timeoutDuration = 200;

                    let autosubmitPayment = "{{ autosubmit_payment }}";
                    let performClick = function() {
                        $(clickSelectors).click();
                    };

                    if (!$(selectors).length || autosubmitPayment === "on") {
                        $(baseSelector).after('<button type="button" class="button button-primary br-7 fsz-14 fw-400 w-100" disabled><span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span></button>');
                        $(baseSelector).addClass('d-none');
                        setTimeout(performClick, timeoutDuration);
                    }
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console.error('error');
            }
        });
    });

 

Надіслати
Поділитися на інших сайтах


Зробив, скоріше всього неправильно, але працює....

 

От сюди додав код...

\catalog\controller\checkout\success.php

 

			$ttn_file_id = $this->session->data['customer']['custom_field'][1]; //9088d6e517fab7a153dde88ea15f3238589a97a6
			if (strlen($ttn_file_id) >39) {
			   $ttn_order_id = $this->session->data['order_id']; 				
			   			
			   $ttn_query = "SELECT * FROM oc_upload WHERE code = '" . $ttn_file_id . "' LIMIT 1";
			   $query = $this->db->query($ttn_query);
			   $ttn_files_list = $query->rows;

			   $ttn_file_in = '';
			   $ttn_file_sitename = '';
				
			   if (!empty($ttn_files_list)) {
				   foreach ($ttn_files_list as $row) {
						$ttn_file_in = $row['name'];
						$ttn_file_sitename = $row['filename'];
					}				   
						
					if (!empty($ttn_file_sitename)) {
						$ttn_text = 'Файл ТТН: https://test.shop/upload/' . $ttn_file_sitename . ' ==';
						
						$ttn_query = "UPDATE oc_order SET comment = CONCAT(comment,' ','" . $ttn_text . "') WHERE order_id = " . $ttn_order_id;
						$query = $this->db->query($ttn_query);
					}
			   }
			}

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.