Александр Туниеков

Александр Туниеков

Был в сети Вчера в 18:06
Заказы принимаю
Единственное могу подсказать поиск в ютубе ищет ссылки под видео. yadi.sk/i/9D_4gn1kI2Rfow Вбейте там адрес на который трафик идет и договоритесь с авторами ссылок чтобы какую-нибудь метку в ссылку добавили
Основной конкурент ERP CRM решений — Excel :-). Надо посчитать площядь изделий. Давайте в Excel формулы набъем, а то на калькуляторе уже достало считать. Потом добавили стоимость металла, расчет трудозатрат и через 5 лет самописная ERP на Excel :-)
ЭЭ… у Excel есть макросы, а макросы работают на VBA. Язык программирования такой Visual Basic for Application. И из него вполне спокойно шлются http запросы :-). Плюс JSONConverter for VBA и вообще что хочешь делай :-).
Да именно так. У директора расчет заказа на excel сделан. И база заказов на нем была. Но эксель затупил и базу заказов в MODX перенесли, а расчет по прежнему в экселе. Работа с заказом идет в экселе и связываться с базой из него удобней.
Это где не обновляется? В <input type=«number» name=«price» class=«autosave» data-product_id="{$id}" value="{$price | replace: ' ': ''}"/> она должна остаться такая какая введена. В другом месте можно скриптом обновлять.
И причем тут success?
Кстати еще ошибочка
<script>
$(document).on('change','.autosave',function(){ 
    $.post('assets/components/autosave/action.php', 
    { product_id: $(this).data('product_id'), price: $(this).val() })
      .done(function(data) { 
        alert("Data Loaded: " + data);
        console.log($.post);
      });
});
</script>
вместо price value почемуто поставил.
Я не проверял код. Счас посмотрел здесь скобочку забыл
if($product = $modx->getObject('msProduct',(int)$_POST['product_id']){
надо
if($product = $modx->getObject('msProduct',(int)$_POST['product_id'])){
Проверяйте!
В начале /assets/components/autosave/action.php напишите
error_reporting(E_ALL);
ini_set('display_errors', 1);
чтоб ошибки показывал
А вообще можно примерно так сделать простой редактор поля price
в чанке вывода результатов mfilter2 для поля price пишем:
<input type="number" class="autosave" data-product_id="[[+id]]" value="[[+price]]"/>
На страницу или в отдельный файл пишем скрипт
<script>
$(function() {
    $(document).on('change','.autosave',function(){
        $.post( "/assets/components/autosave/action.php", 
        { product_id: $(this).data('product_id'), value: $(this).val() })
          .done(function( data ) {
            alert( "Data Loaded: " + data );
          });
    });
});
</script>
Создаем файл /assets/components/autosave/action.php
<?php
define('MODX_API_MODE', true);
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/index.php';

$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');

if (!$modx->user->hasSessionContext('mgr')){
    echo 'Access denied';
    exit;
}

if((int)$_POST['product_id'] > 0){
    if($product = $modx->getObject('msProduct',(int)$_POST['product_id']){
        $product->set('price', $_POST['price']);
        if($product->save()) echo 'success';
    }
}
Кстати существует атрибут content=editable на саму таблицу, которую вывожу, через mFilter2.
Первый раз такое слышу.
если товаров больше 100k
Возможно 100k проще редактировать через excel и потом только выгружать в модкс. Но вот чтобы менеджеры сами 100k товаров редактировали я с таким не сталкивался. Обычно есть прайсы поставщиков и берем их цены умножаем на коофициент и загружаем. У вас не прайсы? Именно вручную 100k товаров редактировать надо?