/* 16.04.2023 3 СЕСПА - промяна настройки за отчетност */ SET TERM ^ ; create or alter procedure SP_SESPA_INIT_REPORT_DATA ( FROM_DATE timestamp, TO_DATE timestamp, DEL_TYPE_ID integer) as declare variable ALOCAL_CLIENT_ID varchar(255); declare variable ACLEAN_CODE_ARTICLE_ID integer; declare variable ACURRENT_NUMBER integer; declare variable ASESPA_CODE_ID integer; BEGIN FOR SELECT SC.ARTICLE_ID FROM SESPA_CODE SC GROUP BY (SC.ARTICLE_ID) HAVING COUNT(*) > 1 INTO :ACLEAN_CODE_ARTICLE_ID DO BEGIN ACURRENT_NUMBER = 1; FOR SELECT SC.ID FROM SESPA_CODE SC WHERE (SC.ARTICLE_ID = :ACLEAN_CODE_ARTICLE_ID) INTO :ASESPA_CODE_ID DO BEGIN IF (ACURRENT_NUMBER > 1) THEN DELETE FROM SESPA_CODE SC WHERE SC.ID = :ASESPA_CODE_ID; ACURRENT_NUMBER = ACURRENT_NUMBER + 1; END END SELECT SP.ARES FROM SP_SESPA_GET_LOCAL_CLIENT_ID SP INTO :ALOCAL_CLIENT_ID; DELETE FROM SESPA_REPORT_NS_DATA SRND WHERE SRND.LOCAL_CLIENT_ID = :ALOCAL_CLIENT_ID; INSERT INTO SESPA_REPORT_NS_DATA (ARTICLE_ID, QUANTITY_LEFT, LOCAL_CLIENT_ID) SELECT SP.ARTICLE_ID, SP.AVAILABLE_QUANTITY, :ALOCAL_CLIENT_ID FROM SP_SPR_SESPA_ARTS_NACH_SALDO(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID) SP; DELETE FROM SESPA_REPORT_TS_DATA SRTS WHERE SRTS.LOCAL_CLIENT_ID = :ALOCAL_CLIENT_ID; INSERT INTO SESPA_REPORT_TS_DATA (ARTICLE_ID, DOCUMENT_NO, DOCUMENT_DATE, GIVEN_QUANTITY, QUANTITY, PARCEL_NO, DOC_TYPE_INFO_ID, CUSTOMER_ID, SUPPLIER_ID, DELIVERY_ID, INV_COR_TYPE_ID, DELIVERY_ITEM_ID, INV_COR_ITEM_ID, SALE_ITEM_ID, SALE_COR_ITEM_ID, PARCEL_ID, LOCAL_CLIENT_ID) SELECT SP1.ARTICLE_ID, SP1.DOCUMENT_NO_SALE_DELIV_INV_COR, SP1.DOCUMENT_DATE, SP1.GIVEN_QUANTITY, SP1.QUANTITY, SP1.PARCEL_NO, SP1.DOCUMENT_TYPE_INFO_ID, SP1.CUSTOMER_ID, SP1.SUPPLIER_ID, SP1.DELIVERY_ID, SP1.INV_COR_TYPE_ID, SP1.DELIVERY_ITEM_ID, SP1.INV_COR_ITEM_ID, SP1.SALE_ITEM_ID, SP1.SALE_COR_ITEM_ID, SP1.PARCEL_ID, :ALOCAL_CLIENT_ID FROM SP_SPR_SESPA_KARTON_MULTI(:FROM_DATE, :TO_DATE) SP1; END^ SET TERM ; ^ SET TERM ^ ; create or alter procedure SP_SPR_SESPA_DATA_CHECK1 ( FROM_DATE timestamp, TO_DATE timestamp, DEL_TYPE_ID integer, TRADE_OBJECT_TYPE integer) returns ( SUPPLIER_ID integer, CUSTOMER_ID integer, NOM_TYPE integer, NOM_DESCRIPTION varchar(100), ISSUE_DESCRIPTION varchar(100), CONTRAGENT_NAME varchar(100)) as declare variable ACOMPANY_POSTCODE varchar(10); BEGIN ACOMPANY_POSTCODE = NULL; SELECT FIRST 1 SS.SETTING_DATA FROM SESPA_SETTINGS SS WHERE (SS.SETTING_NAME = 'CompanyPostCode') INTO :ACOMPANY_POSTCODE; if (:ACOMPANY_POSTCODE = '') then ACOMPANY_POSTCODE = NULL; if (ACOMPANY_POSTCODE IS NULL) then BEGIN SUPPLIER_ID = -1; CUSTOMER_ID = -1; NOM_TYPE = 0; NOM_DESCRIPTION = 'Настройки'; ISSUE_DESCRIPTION = 'Липсват данни за пощенски код на обекта'; CONTRAGENT_NAME = 'Настройки СЕСПА'; SUSPEND; END /* P_RECIPIENT_CODE IS NULL (Dostavka bez SUPPLIER.BULSTAT) -- prodajba vinagi e na 000000000 Vrushta tip Dostavchik -> SUPPLIER_ID (CUSTOMER_ID IS NULL) -> (Problem lipsva EIK na Dostavchik) ======================= Wholesaler -- kum momenta dostavki ne se otchitat Ako nqma ukazan Tip na klienta (P_TRANSACTION_TYPE IS NULL) -> CUSTOMER_ID (Problem lipsva Tip na klienta) Ako nqma P_RECIPIENT_CODE IS NULL -> Vurshta CUSTOMER_ID i problem (Lipsvat danni za licenz / EIK na klienta) */ if (:TRADE_OBJECT_TYPE = 0) then BEGIN /* Pharmacy */ FOR SELECT DISTINCT(SP.SUPPLIER_ID) SUPPLIER_ID, CAST(NULL AS INTEGER) CUSTOMER_ID, CAST(1 AS INTEGER) NOM_TYPE, CAST('Доставчици' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за ЕИК на доставчик' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 0) SP WHERE (SP.P_RECIPIENT_CODE IS NULL) AND (((SP.DOC_TYPE_INFO_ID = 1) AND (SP.P_TRANSACTION_TYPE <> 26) AND (SP.P_TRANSACTION_TYPE <> 37)) OR (SP.P_TRANSACTION_TYPE IN (27))) AND (SP.SUPPLIER_ID <> -100) UNION ALL SELECT SP1.SUPPLIER_ID, SP1.CUSTOMER_ID, SP1.NOM_TYPE, SP1.NOM_DESCRIPTION, SP1.ISSUE_DESCRIPTION FROM ( SELECT DISTINCT(SP.CUSTOMER_ID) CUSTOMER_ID, CAST(NULL AS INTEGER) SUPPLIER_ID, CAST(2 AS INTEGER) NOM_TYPE, CAST('Клиенти' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за ЕИК/лиценз на клиент' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 0) SP WHERE (SP.P_RECIPIENT_CODE IS NULL) AND ((SP.DOC_TYPE_INFO_ID <> 1) AND (SP.P_TRANSACTION_TYPE NOT IN (27, 26, 37))) ) SP1 UNION ALL SELECT DISTINCT(SP.SUPPLIER_ID) SUPPLIER_ID, CAST(NULL AS INTEGER) CUSTOMER_ID, CAST(1 AS INTEGER) NOM_TYPE, CAST('Доставчици' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за ПК на доставчик' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 0) SP WHERE (SP.P_POSTCODE IS NULL) AND (SP.DOC_TYPE_INFO_ID = 1) AND (SP.SUPPLIER_ID <> -100) UNION ALL SELECT DISTINCT(SP.SUPPLIER_ID) SUPPLIER_ID, CAST(NULL AS INTEGER) CUSTOMER_ID, CAST(1 AS INTEGER) NOM_TYPE, CAST('Доставчици' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за пощ. код на доставчик' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 0) SP WHERE (SP.P_RCPT_POSTCODE IS NULL) AND (SP.P_TRANSACTION_TYPE IN (27, 42)) INTO :SUPPLIER_ID, :CUSTOMER_ID, :NOM_TYPE, :NOM_DESCRIPTION, :ISSUE_DESCRIPTION DO BEGIN CONTRAGENT_NAME = NULL; IF (:NOM_TYPE = 1) THEN SELECT FIRST 1 S.NAME FROM SUPPLIER S WHERE S.ID = :SUPPLIER_ID INTO :CONTRAGENT_NAME; SUSPEND; END END ELSE BEGIN /* Wholesaler */ FOR SELECT DISTINCT(SP.CUSTOMER_ID) CUSTOMER_ID, CAST(NULL AS INTEGER) SUPPLIER_ID, CAST(2 AS INTEGER) NOM_TYPE, CAST('Клиенти' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за тип на клиента' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 1) SP WHERE (SP.P_TRANSACTION_TYPE IS NULL) UNION ALL SELECT DISTINCT(SP.CUSTOMER_ID) CUSTOMER_ID, CAST(NULL AS INTEGER) SUPPLIER_ID, CAST(2 AS INTEGER) NOM_TYPE, CAST('Клиенти' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за лиценз / ЕИК на клиента' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 1) SP WHERE (SP.P_RECIPIENT_CODE IS NULL) AND (SP.P_TRANSACTION_TYPE IS NOT NULL) AND (SP.P_TRANSACTION_TYPE NOT IN (27, 42, 1, 4)) UNION ALL SELECT SP2.CUSTOMER_ID, SP2.SUPPLIER_ID, SP2.NOM_TYPE, SP2.NOM_DESCRIPTION, SP2.ISSUE_DESCRIPTION FROM ( SELECT DISTINCT(SP.SUPPLIER_ID) SUPPLIER_ID, CAST(NULL AS INTEGER) CUSTOMER_ID, CAST(1 AS INTEGER) NOM_TYPE, CAST('Доставчици' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за лиценз / ЕИК на доставчика' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 1) SP WHERE (SP.P_RECIPIENT_CODE IS NULL) AND (SP.P_TRANSACTION_TYPE IS NOT NULL) AND (SP.P_TRANSACTION_TYPE IN (27, 42)) ) SP2 /* P_POSTCODE */ /* всички транзакции са с COMPANY.POST_CODE */ /* P_RCPT_POSTCODE */ UNION ALL SELECT DISTINCT(SP.CUSTOMER_ID) CUSTOMER_ID, CAST(NULL AS INTEGER) SUPPLIER_ID, CAST(2 AS INTEGER) NOM_TYPE, CAST('Клиенти' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за пощенски код на клиента' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 1) SP WHERE (SP.P_RCPT_POSTCODE IS NULL) AND (SP.P_TRANSACTION_TYPE IS NOT NULL) AND (SP.P_TRANSACTION_TYPE NOT IN (16, 38, 43)) UNION ALL SELECT SP2.CUSTOMER_ID, SP2.SUPPLIER_ID, SP2.NOM_TYPE, SP2.NOM_DESCRIPTION, SP2.ISSUE_DESCRIPTION FROM ( SELECT DISTINCT(SP.SUPPLIER_ID) SUPPLIER_ID, CAST(NULL AS INTEGER) CUSTOMER_ID, CAST(1 AS INTEGER) NOM_TYPE, CAST('Доставчици' AS VARCHAR(100)) NOM_DESCRIPTION, CAST('Липсват данни за пощенски код на доставчика' AS VARCHAR(100)) ISSUE_DESCRIPTION FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE, :DEL_TYPE_ID, 1) SP WHERE (SP.P_RCPT_POSTCODE IS NULL) AND (SP.P_TRANSACTION_TYPE IS NOT NULL) AND (SP.P_TRANSACTION_TYPE NOT IN (16, 27, 42, 33)) ) SP2 INTO :CUSTOMER_ID, :SUPPLIER_ID, :NOM_TYPE, :NOM_DESCRIPTION, :ISSUE_DESCRIPTION DO BEGIN CONTRAGENT_NAME = NULL; IF (:NOM_TYPE = 2) THEN SELECT FIRST 1 C.NAME FROM CUSTOMER C WHERE C.ID = :CUSTOMER_ID INTO :CONTRAGENT_NAME; SUSPEND; END END END^ SET TERM ; ^ SET TERM ^ ; create or alter procedure SP_SPR_SESPA_PERIOD_REPORT ( FROM_DATE timestamp, TO_DATE timestamp, DEL_TYPE_ID integer, TRADE_OBJECT_TYPE integer) returns ( ARTICLE_ID integer, P_REPORT_DATE timestamp, P_DRUG_CODE varchar(20), P_QUANTITY integer, P_TRANSACTION_TYPE integer, P_AVAILABLE_QTY integer, P_BATCH_NO varchar(20), P_DRUG_PRODUCT_CODE varchar(50), P_COUNTRY varchar(20), P_RECIPIENT_CODE varchar(100), SUPPLIER_ID integer, CUSTOMER_ID integer, P_EXPORT_PLANNED_DATE timestamp, P_ACTOR_TRN_NO varchar(20), PARCEL_ID integer, DELIVERY_ITEM_ID integer, LOCAL_TABLE_INDEX integer, LOCAL_DOCUMENT_ITEM_ID integer, SESPA_TRANSACTION_ID varchar(20), STATUS integer, ERROR_STATUS varchar(50), DOC_TYPE_INFO_ID integer, DOC_TYPE_NAME varchar(100), P_POSTCODE varchar(10), P_RCPT_POSTCODE varchar(10), P_NOTES varchar(200), ATOMIC_FACTOR integer, REPORT_DATE_AS_DATE date) as BEGIN FOR SELECT SP.ARTICLE_ID, SP.P_REPORT_DATE, SP.P_DRUG_CODE, SP.P_QUANTITY, SP.P_TRANSACTION_TYPE, SP.P_AVAILABLE_QTY, SP.P_BATCH_NO, SP.P_DRUG_PRODUCT_CODE, SP.P_COUNTRY, SP.P_RECIPIENT_CODE, SP.SUPPLIER_ID, SP.CUSTOMER_ID, SP.P_EXPORT_PLANNED_DATE, SP.P_ACTOR_TRN_NO, SP.PARCEL_ID, SP.DELIVERY_ITEM_ID, SP.LOCAL_TABLE_INDEX, SP.LOCAL_DOCUMENT_ITEM_ID, ST.SESPA_TRANSACTION_ID, ST.STATUS, ST.ERROR_STATUS, SP.DOC_TYPE_INFO_ID, SP.DOC_TYPE_NAME, SP.P_POSTCODE, SP.P_RCPT_POSTCODE, SP.P_NOTES, SP.ATOMIC_FACTOR, CAST(SP.P_REPORT_DATE AS DATE) FROM SP_SPR_SESPA_REPORT1(:FROM_DATE, :TO_DATE + 1, :DEL_TYPE_ID, :TRADE_OBJECT_TYPE) SP LEFT OUTER JOIN SESPA_TRANSACTION ST ON (ST.LOCAL_TABLE_INDEX = SP.LOCAL_TABLE_INDEX) AND (ST.LOCAL_DOCUMENT_ITEM_ID = SP.LOCAL_DOCUMENT_ITEM_ID) -- ORDER BY SP.P_REPORT_DATE INTO :ARTICLE_ID, :P_REPORT_DATE, :P_DRUG_CODE, :P_QUANTITY, :P_TRANSACTION_TYPE, :P_AVAILABLE_QTY, :P_BATCH_NO, :P_DRUG_PRODUCT_CODE, :P_COUNTRY, :P_RECIPIENT_CODE, :SUPPLIER_ID, :CUSTOMER_ID, :P_EXPORT_PLANNED_DATE, :P_ACTOR_TRN_NO, :PARCEL_ID, :DELIVERY_ITEM_ID, :LOCAL_TABLE_INDEX, :LOCAL_DOCUMENT_ITEM_ID, :SESPA_TRANSACTION_ID, :STATUS, :ERROR_STATUS, :DOC_TYPE_INFO_ID, :DOC_TYPE_NAME, :P_POSTCODE, :P_RCPT_POSTCODE, :P_NOTES, :ATOMIC_FACTOR, :REPORT_DATE_AS_DATE DO SUSPEND; END^ SET TERM ; ^