Инструкция по настройке ф-ции "товар под заказ"
Материал из wiki.standart-n.ru
Версия от 19:00, 11 марта 2019; Agk (обсуждение | вклад)
Содержание
Общее
Менеджер
Создать новый тип документа "Подготовка заказа покупателя "
Создать новый тип документа "'Подготовка заказа покупателя " INSERT INTO DOC_TYPES (ID, CAPTION, INSERTDT, BASE_TYPE, STATINI, REPORTS, VTYPE) VALUES (1001, 'Подготовка заказа покупателя (чек для кассы)', '21-SEP-2018 14:14:33.853', 2, NULL, NULL, 2); + скопировать сетку с любого расходного документа;
выполнить скрипт
INSERT INTO WDICTS (ID, PARENT_ID, CAPTION, DESCRIPTION, SOURCE, STATUS, INSERTDT, ORDERBYDEFAULT, ORDERFIELD, FIELDLIST, INI, ICON) VALUES (101, 0, 'Заказы', NULL, 'ORDERS ', 0, '2018-08-21 11:29:43', NULL, NULL, NULL, ';Обязательно должна быть сортировка по уникальному полю, в таблице нужны ключи по этому полу (возр/убыв) [selectsql] select * from vw_docs d1 where status = 1 and doc_type = 19 and not exists(select id from docs d where d.doc_type = 3 and d.parent_id = d1.id and d.doc_type2 is null) order by id [updatesql] [insertsql] [deletesql] [refreshsql] Select * from vw_docs where ID = :ID [cfSelect] selectfieldexpression=SAGENT AllwaysPartial=1 [main] returnfieldname=ID captionfieldname=SAGENT', NULL); COMMIT WORK; SET TERM ^ ; create or alter procedure PR_GET_ORDER_STATUS ( DOC_ID integer, DOC_TYPE integer) returns ( STATUS DM_TEXT) as begin if (doc_type <> 19) then begin STATUS = ''; suspend; exit; end -- с проведенным чеком "исполнен" if (exists(select id from docs d where d.doc_type = 3 and status = 1 and d.parent_id = :doc_id and doc_type2 is null)) Then begin STATUS = 'исполнен'; suspend; exit; end -- с отложенным чеком "готов к выдаче" if (exists(select id from docs d where d.doc_type = 3 and status <> 1 and d.parent_id = :doc_id and doc_type2 is null)) Then begin STATUS = 'готов к выдаче'; suspend; exit; end -- без чека "в работе" if (not exists(select id from docs d where d.doc_type = 3 and d.parent_id = :doc_id and doc_type2 is null)) Then begin STATUS = 'в работе'; suspend; exit; end end^ SET TERM ; ^ /* Following GRANT statements are generated automatically */ GRANT SELECT ON DOCS TO PROCEDURE PR_GET_ORDER_STATUS; /* Existing privileges on this procedure */ GRANT EXECUTE ON PROCEDURE PR_GET_ORDER_STATUS TO SYSDBA;
настроить сетку документа "Подготовка заказа покупателя"
добавить поле в VW_DOCS
ORDER_STATUS источник (select status from pr_get_order_status(docs.id, docs.doc_type))
В ТМС проведение активного документа (-205)
if (doc_type = 1001) Then OrderPrepare;
и процедуру
procedure OrderPrepare; var sl: TStringList; s2,t2: String; begin //Проверка, что документ не пустой t:='select count(1) as cnt from doc_detail_active where doc_id='+doc_id; query1:=ExecIBQuery(trn,t,1); if (IBQuery_FieldByName_i(query1, 'cnt') = 0) then begin mb_res:=application.messagebox(PChar('Документ пуст. Проведение отменено'),'',MB_ICONSTOP); program_result.Values['cancel']:='1'; exit; end; sl:=TStringList.Create; s2:='[ORDERS]'#13#10+ 'type=action'#13#10+ 'caption=Заказы'#13#10+ 'mode=wdict=101'#13#10+ 'default='+#13#10; sl.text:=s2; if GetCustomParams(sl,'заполните значения') then s2:=sl.values['ORDERS'] else begin mb_res:=application.messagebox(PChar('Необходимо указать контрагента. Проведение документа отменено'),'',MB_ICONSTOP); program_result.Values['cancel']:='1'; exit; end; mb_res:=application.messagebox(PChar('Подготовить данный товар к выдаче по указанному заказу?'),'',$00000004+$00000020); if mb_res<>6 then begin mb_res:=application.messagebox(PChar('Проведение документа отменено пользователем'),'',MB_ICONSTOP); program_result.Values['cancel']:='1'; exit; end; program_result.Values['cancel']:='1'; t2:='update docs set doc_type = 3, status = 2, parent_id = '+s2+' where id = '+doc_id; query1:=ExecIBQuery(trn,t2,1); EndIBTransaction(trn,1); m_manager.logit(t2); m_manager.INITACTIVEDOCS; mb_res:=application.messagebox(PChar('Выполнено. Заказ переведен в статус "к выдаче (поступил)" и отправлен на кассу'),'Успех',MB_ICONINFORMATION); end;