From 9c39977e4054318b177b117106ae80a80ca93c48 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Wed, 19 Dec 2018 01:20:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=BE=D0=B2=20=D0=BC=D0=B5=D0=BD=D0=B5=D0=B4?= =?UTF-8?q?=D0=B6=D0=B5=D1=80=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=90=D0=BB?= =?UTF-8?q?=D0=B8=D1=81=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/UDO_PKG_EXS_ALICE.pck | 145 +++++++++++++++++++++++++++++++++++---- modules/parus_alice.js | 8 +++ 2 files changed, 139 insertions(+), 14 deletions(-) diff --git a/db/UDO_PKG_EXS_ALICE.pck b/db/UDO_PKG_EXS_ALICE.pck index 0b7464d..68e4ae2 100644 --- a/db/UDO_PKG_EXS_ALICE.pck +++ b/db/UDO_PKG_EXS_ALICE.pck @@ -24,6 +24,14 @@ create or replace package UDO_PKG_EXS_ALICE as NEXSQUEUE in number -- ); + /* */ + procedure FIND_CONTACT + ( + NIDENT in number, -- + NSRV_TYPE in number, -- (. PKG_EXS.NSRV_TYPE*) + NEXSQUEUE in number -- + ); + end; / create or replace package body UDO_PKG_EXS_ALICE as @@ -76,6 +84,10 @@ create or replace package body UDO_PKG_EXS_ALICE as end if; /* */ HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; + HELPER_PATTERNS.EXTEND(); HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; HELPER_PATTERNS.EXTEND(); HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; @@ -98,6 +110,8 @@ create or replace package body UDO_PKG_EXS_ALICE as HELPER_PATTERNS.EXTEND(); HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; + HELPER_PATTERNS.EXTEND(); HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; HELPER_PATTERNS.EXTEND(); HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; @@ -125,6 +139,12 @@ create or replace package body UDO_PKG_EXS_ALICE as HELPER_PATTERNS(HELPER_PATTERNS.LAST) := '%'; HELPER_PATTERNS.EXTEND(); HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; end UTL_HELPER_INIT_COMMON; /* */ @@ -140,7 +160,24 @@ create or replace package body UDO_PKG_EXS_ALICE as begin /* */ for W in (select REGEXP_SUBSTR(T.STR, '[^' || SDELIM || ']+', 1, level) SWRD - from (select replace(replace(SSEARCH_STR, ',', ''), '.', '') STR from DUAL) T + from (select replace(replace(replace(replace(replace(replace(replace(replace(replace(SSEARCH_STR, ',', ''), + '.', + ''), + '/', + ''), + '\', + ''), + '''', + ''), + '"', + ''), + ':', + ''), + '?', + ''), + '!', + '') STR + from DUAL) T connect by INSTR(T.STR, SDELIM, 1, level - 1) > 0) loop /* */ @@ -194,23 +231,18 @@ create or replace package body UDO_PKG_EXS_ALICE as (select sum(CN.DOC_SUM) from CONTRACTS CN where CN.AGENT = T.RN) NSUM_CONTRACTS, T.PHONE SPHONE, T.MAIL SMAIL, - T.AGN_COMMENT SCONTACT_PERSON, - NVL((select 1 from DUAL where LOWER(T.AGN_COMMENT) like LOWER(CTMP)), 0) NLINKED_SIGN + T.AGN_COMMENT SCONTACT_PERSON from AGNLIST T, ACATALOG CAT where ((LOWER(T.AGNABBR) like LOWER(CTMP)) or (LOWER(T.AGNNAME) like LOWER(CTMP)) or - (LOWER(T.AGN_COMMENT) like LOWER(CTMP))) + (LOWER(T.AGNFAMILYNAME_AC) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_ABL) like LOWER(CTMP)) or + (LOWER(T.AGNFAMILYNAME_TO) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_FR) like LOWER(CTMP))) and T.CRN = CAT.RN and CAT.NAME = SSEARCH_CATALOG_NAME and ROWNUM <= 1) loop /* */ - if (C.NLINKED_SIGN = 1) then - CRESP := ' , :' || - CHR(10) || CHR(10) || C.SAGENT; - else - CRESP := C.SAGENT; - end if; + CRESP := C.SAGENT; /* - , - */ if (C.NAGNTYPE = 0) then if (C.NCNT_CONTRACTS = 0) then @@ -386,13 +418,14 @@ create or replace package body UDO_PKG_EXS_ALICE as where V.UNIT_RN = T.RN and V.DOCS_PROP_RN = DP.RN and DP.CODE = '') SSTATE, - CN.ALTNAME10 SCUR + CN.ALTNAME10 SCUR, + AG.AGNNAME SMANAGER from CONSUMERORD T, AGNLIST AG, CURNAMES CN, ACATALOG CAT where (LOWER(trim(T.ORD_NUMB)) like LOWER(CTMP)) - and T.AGENT = AG.RN + and T.ACC_AGENT = AG.RN and T.CURRENCY = CN.RN and T.CRN = CAT.RN and CAT.NAME = SSEARCH_CATALOG_NAME @@ -404,7 +437,7 @@ create or replace package body UDO_PKG_EXS_ALICE as if (C.SSTATE is not null) then CRESP := CRESP || ', "' || C.SSTATE || '"'; else - CRESP := CRESP || ', , '; + CRESP := CRESP || ', , '; end if; /* */ if (C.NSUM <> 0) then @@ -412,6 +445,10 @@ create or replace package body UDO_PKG_EXS_ALICE as end if; /* */ CRESP := CRESP || ', ' || TO_CHAR(C.DRELEASE_DATE, 'dd.mm.yyyy'); + /* */ + if (C.SMANAGER is not null) then + CRESP := CRESP || ', : ' || C.SMANAGER; + end if; end loop; else CRESP := ' '; @@ -421,6 +458,86 @@ create or replace package body UDO_PKG_EXS_ALICE as SARG => PKG_EXS.SCONT_FLD_BRESP, BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); end FIND_CONSUMERORD; - + + /* */ + procedure FIND_CONTACT + ( + NIDENT in number, -- + NSRV_TYPE in number, -- (. PKG_EXS.NSRV_TYPE*) + NEXSQUEUE in number -- + ) + is + HELPER_PATTERNS THELPER_PATTERNS; -- + REXSQUEUE EXSQUEUE%rowtype; -- + CTMP clob; -- + CRESP clob; -- + RCTMP sys_refcursor; -- + begin + /* */ + REXSQUEUE := GET_EXSQUEUE_ID(NFLAG_SMART => 0, NRN => NEXSQUEUE); + /* - */ + UTL_HELPER_INIT_COMMON(HELPER_PATTERNS => HELPER_PATTERNS); + /* */ + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := '%'; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := '%'; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := '%'; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := ''; + HELPER_PATTERNS.EXTEND(); + HELPER_PATTERNS(HELPER_PATTERNS.LAST) := '%'; + /* */ + CTMP := BLOB2CLOB(LBDATA => REXSQUEUE.MSG, SCHARSET => 'UTF8'); + /* ( ) */ + PKG_EXS.QUEUE_MSG_SET(NEXSQUEUE => REXSQUEUE.RN, BMSG => CLOB2BLOB(LCDATA => CTMP), RCQUEUE => RCTMP); + /* */ + if (CTMP is not null) then + /* */ + CTMP := UTL_SEARCH_STR_PREPARE(SSEARCH_STR => CTMP, SDELIM => ' ', HELPER_PATTERNS => HELPER_PATTERNS); + /* */ + CRESP := ' '; + /* */ + for C in (select T.AGNNAME SAGENT, + T.AGNTYPE NAGNTYPE, + T.PHONE SPHONE, + T.MAIL SMAIL, + T.AGN_COMMENT SCONTACT_PERSON + from AGNLIST T, + ACATALOG CAT + where ((LOWER(T.AGNABBR) like LOWER(CTMP)) or (LOWER(T.AGNNAME) like LOWER(CTMP)) or + (LOWER(T.AGNFAMILYNAME_AC) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_ABL) like LOWER(CTMP)) or + (LOWER(T.AGNFAMILYNAME_TO) like LOWER(CTMP)) or (LOWER(T.AGNFAMILYNAME_FR) like LOWER(CTMP))) + and T.CRN = CAT.RN + and CAT.NAME = SSEARCH_CATALOG_NAME + and ROWNUM <= 1) + loop + /* */ + CRESP := C.SAGENT; + /* - , - */ + if (C.NAGNTYPE = 0) then + if (C.SCONTACT_PERSON is not null) then + CRESP := CRESP || ', : ' || C.SCONTACT_PERSON; + end if; + end if; + /* - */ + if (C.SPHONE is not null) then + CRESP := CRESP || ', : ' || C.SPHONE; + end if; + /* - e-mail */ + if (C.SMAIL is not null) then + CRESP := CRESP || ', , e-mail: ' || C.SMAIL; + end if; + end loop; + else + CRESP := ' '; + end if; + /* */ + PKG_EXS.PRC_RESP_ARG_BLOB_SET(NIDENT => NIDENT, + SARG => PKG_EXS.SCONT_FLD_BRESP, + BVALUE => CLOB2BLOB(LCDATA => CRESP, SCHARSET => 'UTF8')); + end FIND_CONTACT; + end; / diff --git a/modules/parus_alice.js b/modules/parus_alice.js index 2c2b0ab..abdfb91 100644 --- a/modules/parus_alice.js +++ b/modules/parus_alice.js @@ -25,6 +25,12 @@ const beforeFindConsumerOrd = async prms => {}; //ПОСЛЕ функции "Алиса/Поиск заказа потребителя" const afterFindConsumerOrd = async prms => {}; +//ДО функции "Алиса/Поиск контактной информации" +const beforeFindContact = async prms => {}; + +//ПОСЛЕ функции "Алиса/Поиск контактной информации" +const afterFindContact = async prms => {}; + //----------------- // Интерфейс модуля //----------------- @@ -35,3 +41,5 @@ exports.beforeFindContract = beforeFindContract; exports.afterFindContract = afterFindContract; exports.beforeFindConsumerOrd = beforeFindConsumerOrd; exports.afterFindConsumerOrd = afterFindConsumerOrd; +exports.beforeFindContact = beforeFindContact; +exports.afterFindContact = afterFindContact;