Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
Есть накладная, которую надо заполнять со сканера. Все бы было бы хорошо, если бы значения 1 штрихкода содержало бы абсолютно уникальные записи. Прибавляй по 1-му в количество да и все... но есть одно большое НО:
Что имеем:
Таблица STORE склада скажем:
CODE - значение штрихкода
NAME - название товара
AMOUNT - количество
PRICE_FIRST - себестоимость
PRICE - стоимость в магазине
CODE  NAME           AMOUNT  PRICE_FIRST PRICE
10001 КОСТЮМ ARMANI  5       500.00      2000.00
10002 КОСТЮМ DIOR    2       600.00      2000.00
10002 КОСТЮМ DIOR    3       650.00      2000.00
10003 КОСТЮМ DG      2       550.00      2000.00


и такая же идентичная по полям таблица накладной:
Таблица DOC_STORE

В чем суть проблемы: необходимо заполнять накладную по значению со сканера.
Т.е. сосканил код:
- проверили или в накладной есть такой код,
если есть
- прибавили единицу к количеству,
если нет,
- то записали новую запись с товаром и значением 1 в поле количество.

Но вот например на складе есть один и тот же костюм от DIOR который имеет одинаковое значение штрихкода, но имеет при этом различную себестоимость

Вопрос: как построить алгоритм, чтобы если в накладную уже занеслось все количество товара (с одинаковым штрихкодом) по одной себестоимости переходило на другую запись и записывало (или изменяло количество) уже с другими значением себестоимости...
25 авг 12, 15:25    [13063822]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
aleks2
Guest
casu
Вопрос: как построить алгоритм, чтобы если в накладную уже занеслось все количество товара (с одинаковым штрихкодом) по одной себестоимости переходило на другую запись и записывало (или изменяло количество) уже с другими значением себестоимости...

Как только вы нам разжуете: какой эктрасекс нам доложит "в накладную уже занеслось все количество товара" - вам тут же присоветуют.
25 авг 12, 15:38    [13063851]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
aleks2
Как только вы нам разжуете: какой эктрасекс нам доложит "в накладную уже занеслось все количество товара" - вам тут же присоветуют.

Ну скорее всего это будет простым сравнением суммы этого товара на складе за вычетом суммы этого товара в накладной что заполняется.
25 авг 12, 17:57    [13064035]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
Созрела мысль создавать курсор.
И сравнивать записи накладной и склада по CODE и PRICE_FIRST (если кол-во совпадает, то переходить на следующую строку)
25 авг 12, 18:12    [13064064]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
casu
Созрела мысль создавать курсор
За такое увольняют с записью в трудовую, т.е. профессию вы потеряете.
Перестаньте думать процедурно (императивно), и тогда у вас всё наладится.
26 авг 12, 04:00    [13065249]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
Если бы я хотел реализовывать свою мысль про курсор - я бы не писал на форум... (((
пока нет идей (
26 авг 12, 10:40    [13065349]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
aleks2
Guest
casu
aleks2
Как только вы нам разжуете: какой эктрасекс нам доложит "в накладную уже занеслось все количество товара" - вам тут же присоветуют.

Ну скорее всего это будет простым сравнением суммы этого товара на складе за вычетом суммы этого товара в накладной что заполняется.


1. Ну и в чем, собственно, проблема то?
2. А если одновременно заполняются ...дцать накладных?
26 авг 12, 10:43    [13065356]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35194
Блог
Заполняйте промежуточную таблицу с id-сканера/сессии или id-накладной, затем группируете эту таблицу и данные переносите с основную.
26 авг 12, 10:53    [13065367]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
Проблема в следующем: сканер дает значение штрихкода однозначно, но позиций которые по этому коду будет выбрано - может быть несколько. Нужно чтобы в накладную (без участия продавца) заносились значения именно выпавших по коду записей...

ну беря тот пример что я писал выше:
сканер выдал 10002
на складе есть две позиции этого товара которые различаются по себестоимости
CODE  NAME           AMOUNT  PRICE_FIRST PRICE
10002 КОСТЮМ DIOR    2       600.00      2000.00
10002 КОСТЮМ DIOR    3       650.00      2000.00

т.е. при каждом сканировании в накладную должны "ложиться" по 1 шт
пик!
10002 КОСТЮМ DIOR    1       600.00      2000.00

пик!
10002 КОСТЮМ DIOR    2       600.00      2000.00

пик! (здесь должна заноситься уже следующая запись...)
10002 КОСТЮМ DIOR    2       600.00      2000.00
10002 КОСТЮМ DIOR    1       650.00      2000.00

пик!
10002 КОСТЮМ DIOR    2       600.00      2000.00
10002 КОСТЮМ DIOR    2       650.00      2000.00

пик!
10002 КОСТЮМ DIOR    2       600.00      2000.00
10002 КОСТЮМ DIOR    3       650.00      2000.00


ну вот на жестах
26 авг 12, 11:02    [13065394]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
qwerty112
Guest
casu
...
ну вот на жестах

а теперь, также, "на жестах", покажи, что будет, если "пикать" будут 2-е, ... 3-е, ...10-ро :))

вообщем, то что ты изобретаеш - давно придумано, и называется "партионный учёт"
хочеш - погугли

но, собственно, 2-а момента "донесу" сразу
1
"битьё" по партиям происходит при проведении/принятии накладной
есть у тебя в накладной "статус" ?
2
"пикальшеку" должно быть предельно фиолетово, из какой партии он заносит товар в накладную,
часто это никак в накладной и не отображается (но можно и вывести - не проблема)
это внутренние "заморочки"
26 авг 12, 11:24    [13065426]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
aleks2
Guest
casu
ну вот на жестах

Ну, если на жестах...

1. В таблице STORE должно быть еще одно поле [Остаток]
2. На каждый "пииииик" сканера, ты должен занести в накладную 1 шт товара и уменьшить на складе остаток с минимальной ценой на 1.

declare @t(CODE, PRICE_FIRST, NAME);

set xact_abort on;
begin transaction

update S set [Остаток] = [Остаток] - 1
  output inseted.CODE, inseted.PRICE_FIRST, inseted.NAME into @t(CODE, PRICE_FIRST, NAME) 
  from ( select top 1 * from STORE S where CODE = @CODE  and [Остаток] > 0 order by PRICE_FIRST asc) S
;

merge [накладнуя] N
 using  @t T
on (N.CODE = T.CODE and N.NAME = T.NAME and N.PRICE_FIRST = T.PRICE_FIRST)
when not matched by target then
  insert (CODE, PRICE_FIRST, NAME, AMOUNT) values(T.CODE, T.PRICE_FIRST, T.NAME, 1)
when matched then
  update set AMOUNT = AMOUNT +1
;

commit


select
26 авг 12, 11:48    [13065467]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35194
Блог
casu
на складе есть две позиции этого товара которые различаются по себестоимости


проблема бизнес-процесса, что никак не касается MS SQL
26 авг 12, 13:35    [13065634]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
qwerty112
что будет, если "пикать" будут 2-е, ... 3-е, ...10-ро :))
в данном случае вопрос только в заполнении накладной, а не в ее проведении или принятии.

aleks2, спасибо сейчас буду "прикручивать" к своему коду
26 авг 12, 20:08    [13066278]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
qwerty112
Guest
casu
qwerty112
что будет, если "пикать" будут 2-е, ... 3-е, ...10-ро :))
в данном случае вопрос только в заполнении накладной, а не в ее проведении или принятии.

цитата какито "левая", не в тему ...

ага, т.е. - проведение, как событие БП - имеет место быть, так ?

тогда, что у вас такое "заполнение накладной" (в вашем БП), и почему, это "невинное действие", "вырубает" работу фирмы на ..дцать часов/дней (не нужное зачеркнуть) ??
именно с этим вопросом, "вас будут бить, возможно ногами" ...

если не понятно, - объясняю на примере

- на складе есть 100 xz чего-нибудь
- "злой менеджер", "заполняет накладную" на 100 едениц xz
- всё ! вся остальная менедж.-братия со спокойной совестью "пинает" ! - xz - нет на складе ! - они не могут "заполнить" новой накладной ! жизнь удалась ! все ждут премии :))
- 17:55. "злой менеджер" удаляет горе-накладную ... ну "несложилось", чо ?

вопросы ?
27 авг 12, 01:16    [13067175]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
Есть 3 статуса накладной т.е.:
1) оформление
при этом товар физически на складе и физически грузится на транспортное средство или просто это заполненная накладная
она может быть отложена и забыта

2) отправка товара отправителем (перед тем как провести - выполняется проверка наличия на складе всех занесенных в нее товаров)
после проведения отгруженное количество товара уже недоступно для любых операций (оно имеет статус "товар в пути" назовем это так)

3) получение товара получателем, товар заноситься на другой склад
27 авг 12, 01:33    [13067206]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
т.е. в данном случае вопрос состоял в программной технологии заполнения накладной исходя из вышеизложенных особенностей учета товара.
т.е. этап простого заполнения документа, вот и все
27 авг 12, 01:37    [13067214]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
qwerty112
Guest
casu
Есть 3 статуса накладной т.е.:
1) оформление
при этом товар физически на складе и физически грузится на транспортное средство или просто это заполненная накладная
она может быть отложена и забыта

2) отправка товара отправителем (перед тем как провести - выполняется проверка наличия на складе всех занесенных в нее товаров)
после проведения отгруженное количество товара уже недоступно для любых операций (оно имеет статус "товар в пути" назовем это так)

3) получение товара получателем, товар заноситься на другой склад

чудесно !
я "влёт", могу ещё 5-ть статусов придумать ...

но сейчас-то, речь о каком статусе ?
я несомневаюсь, что о первом вот это ваше "оформление", попробуйте сказать, что "нет" ... :))
27 авг 12, 01:38    [13067219]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
именно о первом об оформлении, Вы совершенно правы
27 авг 12, 01:44    [13067230]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
qwerty112
Guest
casu
именно о первом об оформлении, Вы совершенно правы

нуу, тогда пока всё,
возвращаетесь на этот "уровень" - 13067175
27 авг 12, 01:46    [13067236]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
автор
- на складе есть 100 xz чего-нибудь
- "злой менеджер", "заполняет накладную" на 100 едениц xz
прекрасно пусть заполняет
автор
- всё ! вся остальная менедж.-братия со спокойной совестью "пинает" ! - xz - нет на складе !
с чего это xz нет на складе? пока накладная не проведена - xz на складе все тех же 100
автор
- 17:55. "злой менеджер" удаляет горе-накладную ... ну "несложилось", чо ?
удалил так удалил, ведь это просто заполненный документ, который сам по себе без проведения ничего не физически не "бронирует", не перевозит и не прячет
27 авг 12, 01:54    [13067247]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
qwerty112
Guest
автор
автор
- всё ! вся остальная менедж.-братия со спокойной совестью "пинает" ! - xz - нет на складе !

с чего это xz нет на складе? пока накладная не проведена - xz на складе все тех же 100


с того, что про то, что "xz на складе все тех же 100" - знает только "кладовщик - дядя Вася", но хтож ему на слово-то поверит ?
а ваша БД, в следствии вот этих "движений"

>> На каждый "пииииик" сканера, ты должен занести в накладную 1 шт товара и уменьшить на складе остаток с минимальной ценой на 1.

в этом уже "не уверена"
и происходит это при оформлении, как вы уже 2-ажды подтвердили, а не при проведении

автор
автор
- 17:55. "злой менеджер" удаляет горе-накладную ... ну "несложилось", чо ?

удалил так удалил, ведь это просто заполненный документ, который сам по себе без проведения ничего не физически не "бронирует", не перевозит и не прячет

вот именно, что пока ситуация выглядит как раз так, что "бронирует"

и, если на то пошло, - да, так делают - "резервирование" называется,
только при этом, это - сам по себе отдельный статус, ("зарезервированно", например), который совсем не то, что "оформление" и "она (накладная) может быть отложена и забыта", и снять его "безнаказанно" - нельзя

а вполне себе "серьёзное", с последствиями состояние документа - по типу - частичная предоплата от клиента / ректальные "выводы" менеджеру зарезервировавшему, но не выполнившему контракт / различные комбинации 1 и 2

так как-то ...
27 авг 12, 02:24    [13067275]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
qwerty112
а ваша БД, в следствии вот этих "движений"
>> На каждый "пииииик" сканера, ты должен занести в накладную 1 шт товара и уменьшить на складе остаток с минимальной ценой на 1.

а... Вы о "жестах" aleks2, ну по крайней мере у него практический совет с минимум теории. Я согласен, что если оперировать дополнительным значением наличия на складе - тогда после одного введения накладной на 100hz "злой менеджер" лишит всех работы, даже если кто-то успеет до 17:55 "ввести ему ректальные выводы".
но по крайней мере на техническую сторону вопроса aleks2 ответил... и его код (за вычетом некоторых исправлений в синтаксисе работает)... а вот что делать с дядей Васей (начальником склада) и "злым менеджером" я пока думаю
27 авг 12, 03:03    [13067305]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
qwerty112
Guest
casu
qwerty112
а ваша БД, в следствии вот этих "движений"
>> На каждый "пииииик" сканера, ты должен занести в накладную 1 шт товара и уменьшить на складе остаток с минимальной ценой на 1.

а... Вы о "жестах" aleks2, ну по крайней мере у него практический совет с минимум теории.
...

что значит о "жестах" ?

aleks2, дал вам решение на 100% удовлетворяющее, заявленному вами ТЗ !
другое дело, что либо ТЗ, либо ваше его понимание, - не корректно, потому как приводит к описанной мной проблеме ...

и отвечал я, исключительно на этот комментарий
автор
в данном случае вопрос только в заполнении накладной, а не в ее проведении или принятии.


а так, - даа ... я тоже за то, что бы, - каждый "разбился" персонально :))
понимание приходит только с этим ...
27 авг 12, 03:18    [13067313]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
invm
Member

Откуда: Москва
Сообщений: 9785
casu,

Не пробовали представить себя на месте "пикальщика"? Например, "пропикать" 100 ед. одного товара?
27 авг 12, 11:48    [13068313]     Ответить | Цитировать Сообщить модератору
 Re: Автоматический INSERT или UPDATE записи (помогите с идеей)  [new]
casu
Member

Откуда:
Сообщений: 133
invm
Не пробовали представить себя на месте "пикальщика"? Например, "пропикать" 100 ед. одного товара?

На самом деле там вся база состоит из 4 000 наименований, так что если в одну накладную "упадут" 100 наименований - это будет в самом большом приходе.
А автоматическая вноска по сканеру, которую я пытаюсь реализовать - это процедура которая служит как альтернатива к обычной процедуре заполнения накладной.
И да я "пикал" делая инвентаризацию магазина: скажу очень удобная штука, не надо никаких ручных сравнений. Прошелся сканером по магазину в течении минут 40... и вот тебе наглядная картина по наличию...

Что касается партийного учета, пообщался с 1С-никами, правда строителями, но они напрочь опровергли:
qwerty112
"битьё" по партиям происходит при проведении/принятии накладной
, как раз на этапе оформления накладной учитываются все различия одной и той же номенклатуры видны по ценам и по партиям...
27 авг 12, 15:20    [13070319]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить