Автоприсвоение групп в эл. накладных — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
Если клиенту требуется, чтобы группы товаров (например: делимый, дет. питание, оптика и др.), назначенные в одной точке (магазине,аптеке) автоматически присваивались при перемещении товаров в другой точке, необходимо выполнить следующее:
 
Если клиенту требуется, чтобы группы товаров (например: делимый, дет. питание, оптика и др.), назначенные в одной точке (магазине,аптеке) автоматически присваивались при перемещении товаров в другой точке, необходимо выполнить следующее:
 
  
 
==Редактирование подпрограммы отправки накладных==
 
==Редактирование подпрограммы отправки накладных==
1) Строка создания dbf должна содержать SKLAD_ID и выглядеть следующим образом:
+
Редактируем подпрограммы "Проведение активного документа", "Отправить на почту" и "Проведение с авторасходом":
 +
 
 +
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),
QUANT NUMERIC(20,9),QUANT1 CHAR(100),PRICE_O1 NUMERIC(20,5),PRICE_Z NUMERIC(20,5),PRICE_O NUMERIC(20,9),NDSO NUMERIC(20,5),
+
...........
SUM_NDSO NUMERIC(20,5),PRICE_R NUMERIC(20,5),IZG CHAR(250),SERT CHAR(250),SDSERT DATE,KEMVSERT CHAR(250),REGN CHAR(250),
+
...........
DATESERT DATE,GODENDO DATE,NGTD CHAR(250),STRANA CHAR(250),PRICE NUMERIC(20,5),BARCODE CHAR(250),GNVLS NUMERIC(20,5),
+
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(250),SUM_NDSR NUMERIC(20,5),SKLAD_ID CHAR(250));
+
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)Заполняем поле SKLAD_ID информацией о присвоенных группах (поле mmbsh):
+
2) Если поля mmbsh в запросе к данным документа нет, добавляем его. Пример:
 
  <nowiki>
 
  <nowiki>
stringreplace(IBQuery_FieldByName_s(query1, 'mmbsh'),'''','',1)
+
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) Если поля mmbsh в запросе к данным документа нет, добавляем его.
+
3)Заполняем поле GNVLS информацией о присвоенных группах (поле mmbsh):
 
+
<nowiki>
Не забываем исправить в подпрограммах "Проведение активного документа" и "Отправить на почту"
+
заменяем
 +
  IBQuery_FieldByName_i(query1, 'gnvls')
 +
на  
 +
  stringreplace(IBQuery_FieldByName_s(query1, 'mmbsh'),'''','',1)
 +
</nowiki>
  
  
 
==Настройка менеджера групп партий==
 
==Настройка менеджера групп партий==
  В менеджере групп партий, для требуемых групп изменить или создать процедуру CheckMembership, которая будет проверять поле SKLAD_ID на необходимое значение. Пример см. ниже.
+
  В менеджере групп партий, для требуемых групп изменить или создать процедуру CheckMembership, которая будет проверять поле GNVLS на необходимое значение. Пример см. ниже.
 
  <nowiki>
 
  <nowiki>
 
program GroupProgram;
 
program GroupProgram;
 
procedure CheckMembership;
 
procedure CheckMembership;
 
begin
 
begin
   if pos('Сан. гиг',fieldvalue_s('SKLAD_ID'))>0 then
+
   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, накладные, перетекание групп