Ответить Новая тема Новый опрос 
 Коректный складской учет в Престе
Gorets


Cпециалист
Сообщений: 143
Регистрация: 19-10-2009


02-07-2010 15:35
При попытке отказатся от внешней системы учета товаров столнулся с одной реальной проблемой:
Имеем систему учета товаров на складе.
Включена возможность заказа товаров которого 0 на складе. (без этого никак)
Но при этом есть одна недоработка:
Если оформить заказ на товар которого на складе "ноль" и которого на складе "один" - в итоге получим остаток этого товара на складе "ноль", но неизвесно, небыло ли товара на складе до заказа, или товор был в единичном экземпляре и купили последний.
Аналогичная ситуация если например остаток "десять товара" и оформили заказ на 15 товаров. - сколько было реально товара неизвесно.

Никто не сталкивался с такой ситуацией?
Если есть желающие, готов заплатить за хак, реализующий возможность минусовых остатков.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
антон
Профессионал
Сообщений: 437
Откуда: Санкт-Петербург
Регистрация: 05-12-2009


03-07-2010 19:29
Может проще поступить - забейте количество каждого товара например по 10000штук и пусть это будет как-будто "ноль". т.е. 10010 - это значит есть на складе 10 штук, а 9999 - значит "-1".
 



Интернет-магазин товаров для йоги yogastuff.ru.
Шаблоны на престу - демо
Ещё один магазин йоги namaskar108.ru
Йога в Москве yogadog.ru
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
aa.seleznev
Новичок
Сообщений: 7
Откуда: Тюмень
Регистрация: 14-12-2009


04-07-2010 00:35
да и вообще бессмысленно затачивать престу на складской учет, не предназначена она для этого...проще организовать грамотную выгрузку из 1С
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Gorets


Cпециалист
Сообщений: 143
Регистрация: 19-10-2009


05-07-2010 00:42
Цитата:
Может проще поступить - забейте количество каждого товара например по 10000штук и пусть это будет как-будто "ноль". т.е. 10010 - это значит есть на складе 10 штук, а 9999 - значит "-1".
Я думал об этом, но есть пара мелких проблем связаных с этим. Во первых трекинг нужно пилить чтоб отображались товары которых нет, во вторых мне нужен будет модуль по остаткам на складе, в том числе сумы имеющегося товара итд, и опять придется его делать таким вот извратом, а не простыс запросом.
Цитата:
да и вообще бессмысленно затачивать престу на складской учет, не предназначена она для этого...проще организовать грамотную выгрузку из 1С
Решить оду проблемку появлением сотни проблем? Нет спасибо. а и зачем мне покупать (искать варез) ради простого складского учета?
Если б я хотел парится с синхронизацией остатков, есть решения проще чем 1С и к тому же Опен соурс.

ПС. Сейчас появилась идея сделать отдельную таблицу в БД и тригер, который будет срабатывть при оформлении заказа и проверять сколько было товара до, сколько куплено, и если разница минусовая то записывать товар в эту таблицу.
Правда не знаю реализуемо ли это в MySQL, иду читать маны или просить помощи фрилансеров...


Сообщение отредактировано Gorets 05-07-2010 01:50 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ors
Профессионал
Сообщений: 1885
Регистрация: 09-11-2009


05-07-2010 01:25
Что за Опен соурс решения для учета?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Gorets


Cпециалист
Сообщений: 143
Регистрация: 19-10-2009


05-07-2010 01:51
Да ну их много я так сразу и не скажу.
Ну из первого что вспомнилось та ж WebERP
На sourceforge посмотри

Давно когдато пробовал, но что есть что уже не помню:
PhreeBooksR
Stock_Management_System
stockmaniac
итд


Сообщение отредактировано Gorets 05-07-2010 02:53 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Gorets


Cпециалист
Сообщений: 143
Регистрация: 19-10-2009


08-07-2010 01:21
Ок, делюсь тригером для (на мой взгяд) удобного учета товара в магазине:
Что делает триггер:
1. Делает записи о товарах которые закончились на складе (в чем прикол стандартного учета престы - читаем первый пост)
2. Делает записи о товарах заказаных сверх количества имеющегося на складе.
Для работы в настройках должна быть включена возможность заказа товара с нулевым остатком. ПС само собой только на MySQL 5+
Создаем таблицы
Код:
CREATE TABLE IF NOT EXISTS `0in_stock` (
  `id_0in_stock` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `id_product` int(10) unsigned NOT NULL,
  `id_product_attribute` int(10) unsigned DEFAULT NULL,

  PRIMARY KEY (`id_0in_stock`),
  KEY `key_product` (`id_product`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


CREATE TABLE IF NOT EXISTS `minus_in_stock` (
  `id_minus_in_stock` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `id_product` int(10) unsigned NOT NULL,
  `id_product_attribute` int(10) unsigned DEFAULT NULL,
  `difQq` int(10) unsigned NOT NULL,

  PRIMARY KEY (`id_minus_in_stock`),
  KEY `key_product` (`id_product`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Создаем триггер
Код:
DROP TRIGGER IF EXISTS  `ВАША БАЗА ДАНЫХ!`.`after_insert_ps_orders`;

DELIMITER $$
CREATE TRIGGER `after_insert_ps_orders` after insert ON `ps_orders`
FOR EACH ROW BEGIN

insert 0in_stock (id_product,id_product_attribute)
select distinct id_product, case when id_product_attribute<>0 then id_product_attribute end
from ps_cart_product
where (ps_cart_product.id_cart=NEW.`id_cart`)and
      (
       (
        (ps_cart_product.id_product_attribute=0)and
        (ps_cart_product.quantity=(select quantity from ps_product where id_product=ps_cart_product.id_product))
       )

      or
       (
        (ps_cart_product.id_product_attribute<>0)and
        (ps_cart_product.quantity=(select quantity from  ps_product_attribute where (id_product=ps_cart_product.id_product)
                                                 and (id_product_attribute=ps_cart_product.id_product_attribute) ))
       )
      );


insert minus_in_stock (id_product,id_product_attribute,difQq)
select distinct id_product,

case when (id_product_attribute<>0) then id_product_attribute end,
case when (ps_cart_product.id_product_attribute=0) then
ps_cart_product.quantity-(select quantity from ps_product where id_product=ps_cart_product.id_product)
else
ps_cart_product.quantity-(select quantity from  ps_product_attribute where (id_product=ps_cart_product.id_product)
                                                  and (id_product_attribute=ps_cart_product.id_product_attribute)) end

from ps_cart_product
where (ps_cart_product.id_cart=NEW.`id_cart`)and
      (
       (
        (ps_cart_product.id_product_attribute=0)and
        (ps_cart_product.quantity>(select quantity from ps_product where id_product=ps_cart_product.id_product) )
       )
      or
       (
        (ps_cart_product.id_product_attribute<>0)and
        (ps_cart_product.quantity>(select quantity from  ps_product_attribute where (id_product=ps_cart_product.id_product)
                                                 and (id_product_attribute=ps_cart_product.id_product_attribute) ))
       )
      );


END;
$$

DELIMITER;
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос