Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Добрый день, давно стояла необходимость в учете остатков и себестоимости товара.
Решил попробовать реализовать в самой симпле. По аналогии с заказами и продажами (таблица с перечнем товаров заказа), создал еще две таблицы- поставки и закупки (перечень товаров в поставке). Механику и api реализовал по аналогии с продажами (Orders). В админке сделал отдельное окно для поставок. Так же, добавил таблицу для складов, и в таблицы поставок и заказов добавил столбец warehouse_id, для контроля склада.
всё работает хорошо - поставки сохраняются в поставки, заказы клиентов в заказы клиентов.
Задумка в следующем - реализовать механику,подобную сервису МойСклад: что бы остатки и себестоимость товара просчитывались и выводились динамически, а не хранились в базе данных.

Набросал код запроса:

SELECT DATE, amount, price, order_id, stock - amount AS stock from (select DATE, product, variant, amount, price, order_id,
    (case when product=@prod then @costnew:=(case when amount>0 then (@costnew*@ost+amount*price)/(@stock+amount) 
                                                              else @costnew end)
                            else @costnew:=price END) costnew,
    (case when product=@prod then @stock:=@stock+amount else @stock:=amount END) stock,
    @prod:=product
  FROM ((SELECT pu.product_id AS product, pu.variant_id AS variant, pu.amount AS amount, pu.price AS price, pr.date, pr.warehouse_id, 0 AS order_id FROM s_purchases AS pu LEFT JOIN s_procurements AS pr ON pr.id=pu.order_id WHERE pr.date<(SELECT DATE FROM s_orders WHERE id=3)) 
  UNION (SELECT s.product_id AS product, s.variant_id AS variant, -s.amount AS amount, s.price AS price, o.date, o.warehouse_id, order_id FROM s_sales AS s LEFT JOIN s_orders AS o ON o.id=s.order_id WHERE o.date<=(SELECT DATE FROM s_orders WHERE id=3))) dat,(select @prod:=0, @stock:=0, @costnew:=0.0) u
  order by product,DATE) d

  ORDER BY DATE DESC LIMIT 10

Логика запроса - соединить таблицу закупок товаров и таблицу продаж товаров, и на основе этой общей таблицы получить остаток и себестоимость товара в заказе на конкретную дату (дату заказа).
Хотелось бы услышать мнение местных профессионалов - на сколько это хорошее решение, и не аукнится ли оно мне со временем/ростом количества заказов? Если же решение не из лучших, быть может кто-то сможет предложить более грамотное решение?
И, да, я понимаю, что симпла это CMS, и может не совсем рационально пихать в нее CRM и WMS механики, но почему бы и нет? Система простая, открытая, а иметь  все под рукой было бы идеально.
Заранее, спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Если работает и правильно считает, то и хорошо, пользуйтесь.

Переживать за ресурсы сервера при сложном запросе, по-моему, не стоит, ведь запрос это выполняется в админке, то есть довольно редко по масштабам работы сервера. Если же хотите надежности, то проводите эксперименты, создав базу большого объема и замеряя время работы запроса.

 

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...