Автоприсвоение групп в эл. накладных — различия между версиями
Agk (обсуждение | вклад) |
Agk (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
Если клиенту требуется, чтобы группы товаров (например: делимый, дет. питание, оптика и др.), назначенные в одной точке (магазине,аптеке) автоматически присваивались при перемещении товаров в другой точке, необходимо выполнить следующее: | Если клиенту требуется, чтобы группы товаров (например: делимый, дет. питание, оптика и др.), назначенные в одной точке (магазине,аптеке) автоматически присваивались при перемещении товаров в другой точке, необходимо выполнить следующее: | ||
− | |||
==Редактирование подпрограммы отправки накладных== | ==Редактирование подпрограммы отправки накладных== | ||
− | 1) Строка создания dbf должна содержать | + | Редактируем подпрограммы "Проведение активного документа", "Отправить на почту" и "Проведение с авторасходом": |
+ | |||
+ | 1) Строка создания dbf таблицы должна содержать поле GNVLS с типом CHAR(250) и выглядеть примерно так: | ||
<nowiki> | <nowiki> | ||
− | CREATE TABLE temp (DOCNUM CHAR(250), DOCNUM1 CHAR(100),DOCDATE DATE,TOVAR CHAR(250),ORIG_TOVAR CHAR(250),SER CHAR(250), | + | 'CREATE TABLE temp (DOCNUM CHAR(250),DOCNUM1 CHAR(100),DOCDATE DATE,TOVAR CHAR(250),ORIG_TOVAR CHAR(250),SER CHAR(250), |
− | + | ........... | |
− | + | ........... | |
− | DATESERT DATE,GODENDO DATE,NGTD CHAR(250),STRANA CHAR(250),PRICE NUMERIC(20,5),BARCODE CHAR(250),GNVLS | + | DATESERT DATE,GODENDO DATE,NGTD CHAR(250),STRANA CHAR(250),PRICE NUMERIC(20,5),BARCODE CHAR(250),GNVLS CHAR(250), |
− | ORIG_CODE CHAR(250),PART CHAR( | + | ORIG_CODE CHAR(250),PART CHAR(10),SUM_NDSR NUMERIC(20,5),SKLAD_ID CHAR(250), DEP NUMERIC(1,0))'; |
</nowiki> | </nowiki> | ||
+ | Если при создании dbf таблицы подпрограмма сообщает об ошибке, возможно превышен лимит ширины таблицы в 4000 символов, попробуйте длину поля PART урезать до 10 символов. | ||
− | 2) | + | 2) Если поля mmbsh в запросе к данным документа нет, добавляем его. Пример: |
<nowiki> | <nowiki> | ||
− | + | t:='select dd.price_o,abs(dd.summa_o) as summa_o | |
+ | ...., | ||
+ | ...., | ||
+ | dd.mmbsh | ||
+ | from vw_doc_detail_active dd left join vw_docs d on dd.doc_id=d.id where dd.doc_id='+inttostr(m_activedoc_id); | ||
</nowiki> | </nowiki> | ||
− | 3) | + | 3)Заполняем поле GNVLS информацией о присвоенных группах (поле mmbsh): |
− | + | <nowiki> | |
− | + | заменяем | |
+ | IBQuery_FieldByName_i(query1, 'gnvls') | ||
+ | на | ||
+ | stringreplace(IBQuery_FieldByName_s(query1, 'mmbsh'),'''','',1) | ||
+ | </nowiki> | ||
==Настройка менеджера групп партий== | ==Настройка менеджера групп партий== | ||
− | В менеджере групп партий, для требуемых групп изменить или создать процедуру CheckMembership, которая будет проверять поле | + | В менеджере групп партий, для требуемых групп изменить или создать процедуру CheckMembership, которая будет проверять поле GNVLS на необходимое значение. Пример см. ниже. |
<nowiki> | <nowiki> | ||
program GroupProgram; | program GroupProgram; | ||
procedure CheckMembership; | procedure CheckMembership; | ||
begin | begin | ||
− | if pos(' | + | if pos('Делим.',fieldvalue_s('GNVLS'))>0 then |
return_boolean(true); | return_boolean(true); | ||
end; | end; | ||
Строка 39: | Строка 49: | ||
− | Теги: группы, менеджер групп, CheckMembership, накладные | + | Теги: группы, менеджер групп, CheckMembership, накладные, перетекание групп |
Текущая версия на 14:50, 25 февраля 2015
Если клиенту требуется, чтобы группы товаров (например: делимый, дет. питание, оптика и др.), назначенные в одной точке (магазине,аптеке) автоматически присваивались при перемещении товаров в другой точке, необходимо выполнить следующее:
Редактирование подпрограммы отправки накладных
Редактируем подпрограммы "Проведение активного документа", "Отправить на почту" и "Проведение с авторасходом":
1) Строка создания dbf таблицы должна содержать поле GNVLS с типом CHAR(250) и выглядеть примерно так:
'CREATE TABLE temp (DOCNUM CHAR(250),DOCNUM1 CHAR(100),DOCDATE DATE,TOVAR CHAR(250),ORIG_TOVAR CHAR(250),SER CHAR(250), ........... ........... DATESERT DATE,GODENDO DATE,NGTD CHAR(250),STRANA CHAR(250),PRICE NUMERIC(20,5),BARCODE CHAR(250),GNVLS CHAR(250), ORIG_CODE CHAR(250),PART CHAR(10),SUM_NDSR NUMERIC(20,5),SKLAD_ID CHAR(250), DEP NUMERIC(1,0))';
Если при создании dbf таблицы подпрограмма сообщает об ошибке, возможно превышен лимит ширины таблицы в 4000 символов, попробуйте длину поля PART урезать до 10 символов.
2) Если поля mmbsh в запросе к данным документа нет, добавляем его. Пример:
t:='select dd.price_o,abs(dd.summa_o) as summa_o ...., ...., dd.mmbsh from vw_doc_detail_active dd left join vw_docs d on dd.doc_id=d.id where dd.doc_id='+inttostr(m_activedoc_id);
3)Заполняем поле GNVLS информацией о присвоенных группах (поле mmbsh):
заменяем IBQuery_FieldByName_i(query1, 'gnvls') на stringreplace(IBQuery_FieldByName_s(query1, 'mmbsh'),'''','',1)
Настройка менеджера групп партий
В менеджере групп партий, для требуемых групп изменить или создать процедуру CheckMembership, которая будет проверять поле GNVLS на необходимое значение. Пример см. ниже. program GroupProgram; procedure CheckMembership; begin if pos('Делим.',fieldvalue_s('GNVLS'))>0 then return_boolean(true); end; begin end.
Проверка себя
Настроить исходную и целевую базы, повторно отправить накладную с требуемыми группами и принять. Группы должны присвоиться автоматически.
Теги: группы, менеджер групп, CheckMembership, накладные, перетекание групп