Проверка на ЖНВЛС (ошибка в процедуре)
Материал из wiki.standart-n.ru
Версия от 16:01, 5 августа 2016; Agk (обсуждение | вклад)
Ошибка
При запуске аналитического отчета по проверке ЖНВЛС выходит ошибка на PR_GNVLSCHECK, а при попытке её скомпилировать сообщение too many Contexts of Relation/Views. Maximum allowed is 255 Error while parsing procedure PR_GNVLSCHECK's BLR
Выполните скрипт
Скрипт
SET TERM ^ ; create or alter procedure PR_GNVLSCHECK_SOURCE0 ( ANALYTIC_DOC_ID DM_ID, PERIODBEG DM_DATE, PERIODEND DM_DATE, NAC1 DM_DOUBLE, NAC2 DM_DOUBLE, NAC3 DM_DOUBLE, NAC4 DM_DOUBLE) as begin insert into analytic_GNVLS( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Превышение максимальной розничной цены', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, gb.price, w.seria, w.part_id, w.price_z, w.price_r, w.nac from warebase w left join out$gnvls_barcode gb on ((w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode)) and abs(gb.price_r-w.price_r)<=0.01 where (w.quant>0 and trim(gb.barcode)<>'' and gb.barcode is not null and (w.price>=gb.price)) group by 'Превышение максимальной розничной цены',w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price, gb.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; insert into analytic_GNVLS( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не найден в реестре ЖНВЛС или не верная цена реестра', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria, w.part_id, w.price_z, w.price_r, w.nac from warebase w left join out$gnvls_barcode gb on ((w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode)) and abs(gb.price_r-w.price_r)<=0.01 where exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id) and w.quant>0 and gb.barcode is null group by 'Не найден в реестре ЖНВЛС или не верная цена реестра' ,w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price, gb.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Превышение наценки', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --iif(w.price_z>w.price_r*1.1 and w.price_r>0,w.price_r*1.1,w.price_z)*iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1))/100+w.price_o, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_warebase w where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and w.price_r<>0 and w.price_z<>0 and w.price_z>0 and w.quant>0 and ( ( not (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=47 and grouptable_id=w.name_id)) and ( 100*(w.price-w.Price_O)/iif(w.price_z*100/110>w.price_r and w.price_r>0,w.price_r*1.1,w.price_z) >iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1)) or w.nac >iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1)) --23.04.2015 А.К. по просьбе Наташи ) ) or ( (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=47 and grouptable_id=w.name_id)) and w.price_r<>0 and w.price_z<>0 and 100*(w.price-w.Price_O)/iif(w.price_z*100/110>w.price_r and w.price_r>0,w.price_r*1.1,w.price_z) > :nac4 ) ); insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не указана цена завода', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from warebase w -- where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=3 and grouptable_id=w.name_id)) and (w.price_z=0 or (w.price_z is null) ) and where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and ((w.price_z between -0.000001 and 0.000001) or (w.price_z is null) ) and w.quant>0 ; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не указана цена рестра', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from warebase w -- where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=3 and grouptable_id=w.name_id)) and (w.price_r=0 or (w.price_r is null) ) and where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and ((w.price_r between -0.00001 and 0.000001) or (w.price_r is null) ) and w.quant>0 ; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Укажите группу ЖНВЛС', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from warebase w left join out$gnvls_barcode gb on (w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode) where (not exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and (trim(gb.barcode)<>'' and gb.barcode is not null) and w.quant>0 group by 'Укажите группу ЖНВЛС',w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; end^ SET TERM ; ^ /* Following GRANT statetements are generated automatically */ GRANT INSERT ON ANALYTIC_GNVLS TO PROCEDURE PR_GNVLSCHECK_SOURCE0; GRANT SELECT ON WAREBASE TO PROCEDURE PR_GNVLSCHECK_SOURCE0; GRANT SELECT ON OUT$GNVLS_BARCODE TO PROCEDURE PR_GNVLSCHECK_SOURCE0; GRANT SELECT ON GROUP_DETAIL TO PROCEDURE PR_GNVLSCHECK_SOURCE0; GRANT SELECT ON VW_WAREBASE TO PROCEDURE PR_GNVLSCHECK_SOURCE0; /* Existing privileges on this procedure */ GRANT EXECUTE ON PROCEDURE PR_GNVLSCHECK_SOURCE0 TO SYSDBA; SET TERM ^ ; create or alter procedure PR_GNVLSCHECK_SOURCE1 ( ANALYTIC_DOC_ID DM_ID, PERIODBEG DM_DATE, PERIODEND DM_DATE, NAC1 DM_DOUBLE, NAC2 DM_DOUBLE, NAC3 DM_DOUBLE, NAC4 DM_DOUBLE) as begin insert into analytic_GNVLS( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Превышение максимальной розничной цены', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, --w.price, gb.price, w.seria ,w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join doc_types dt on dt.id=d.doc_type left join out$gnvls_barcode gb on ((w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode)) and abs(gb.price_r-w.price_r)<=0.01 where w.doc_commitdate between :periodbeg and :periodend and dt.base_type=1 and (trim(gb.barcode)<>'' and gb.barcode is not null and (w.price>=gb.price)) group by 'Превышение максимальной розничной цены',w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price, gb.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; insert into analytic_GNVLS( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не найден в реестре ЖНВЛС или не верная цена реестра', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria, w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join doc_types dt on dt.id=d.doc_type left join out$gnvls_barcode gb on ((w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode)) and abs(gb.price_r-w.price_r)<=0.01 where w.doc_commitdate between :periodbeg and :periodend and dt.base_type = 1 and exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id) and gb.barcode is null group by 'Не найден в реестре ЖНВЛС или не верная цена реестра' ,w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price, gb.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Превышение наценки', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --iif(w.price_z>w.price_r*1.1 and w.price_r>0,w.price_r*1.1,w.price_z)*iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1))/100+w.price_o, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join doc_types dt on dt.id=d.doc_type where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and w.price_r<>0 and w.price_z<>0 and w.price_z>0 and w.quant>0 and ( ( not (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=47 and grouptable_id=w.name_id)) and 100*(w.price-w.Price_O)/iif(w.price_z*100/110>w.price_r and w.price_r>0,w.price_r*1.1,w.price_z) >iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1)) ) or ( (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=47 and grouptable_id=w.name_id)) and w.price_r<>0 and w.price_z<>0 and 100*(w.price-w.Price_O)/iif(w.price_z*100/110>w.price_r and w.price_r>0,w.price_r*1.1,w.price_z) > :nac4 ) ) and dt.base_type=1 and w.doc_commitdate between :periodbeg and :periodend; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не указана цена завода', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join doc_types dt on dt.id=d.doc_type -- where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=3 and grouptable_id=w.name_id)) and (w.price_z=0 or (w.price_z is null) ) and where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and ((w.price_z between -0.000001 and 0.000001) or (w.price_z is null) ) and w.doc_commitdate between :periodbeg and :periodend and dt.base_type=1; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не указана цена рестра', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join doc_types dt on dt.id=d.doc_type -- where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=3 and grouptable_id=w.name_id)) and (w.price_r=0 or (w.price_r is null) ) and where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and ((w.price_r between -0.00001 and 0.000001) or (w.price_r is null) ) and w.doc_commitdate between :periodbeg and :periodend and dt.base_type=1; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Укажите группу ЖНВЛС', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join doc_types dt on dt.id=d.doc_type left join out$gnvls_barcode gb on (w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode) where (not exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and (trim(gb.barcode)<>'' and gb.barcode is not null) and w.doc_commitdate between :periodbeg and :periodend and dt.base_type =1 group by 'Укажите группу ЖНВЛС',w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; end^ SET TERM ; ^ /* Following GRANT statetements are generated automatically */ GRANT INSERT ON ANALYTIC_GNVLS TO PROCEDURE PR_GNVLSCHECK_SOURCE1; GRANT SELECT ON VW_DOC_DETAIL TO PROCEDURE PR_GNVLSCHECK_SOURCE1; GRANT SELECT ON DOCS TO PROCEDURE PR_GNVLSCHECK_SOURCE1; GRANT SELECT ON DOC_TYPES TO PROCEDURE PR_GNVLSCHECK_SOURCE1; GRANT SELECT ON OUT$GNVLS_BARCODE TO PROCEDURE PR_GNVLSCHECK_SOURCE1; GRANT SELECT ON GROUP_DETAIL TO PROCEDURE PR_GNVLSCHECK_SOURCE1; /* Existing privileges on this procedure */ GRANT EXECUTE ON PROCEDURE PR_GNVLSCHECK_SOURCE1 TO SYSDBA; SET TERM ^ ; create or alter procedure PR_GNVLSCHECK_SOURCE2 ( ANALYTIC_DOC_ID DM_ID, PERIODBEG DM_DATE, PERIODEND DM_DATE, NAC1 DM_DOUBLE, NAC2 DM_DOUBLE, NAC3 DM_DOUBLE, NAC4 DM_DOUBLE) as begin insert into analytic_GNVLS( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Превышение максимальной розничной цены', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, gb.price, w.seria, w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join out$gnvls_barcode gb on ((w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode)) and abs(gb.price_r-w.price_r)<=0.01 where w.doc_commitdate between :periodbeg and :periodend and d.doc_type in (6,11,39) and (trim(gb.barcode)<>'' and gb.barcode is not null and (w.price>=gb.price)) group by 'Превышение максимальной розничной цены',w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price, gb.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; insert into analytic_GNVLS( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не найден в реестре ЖНВЛС или не верная цена реестра', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria, w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join out$gnvls_barcode gb on ((w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode)) and abs(gb.price_r-w.price_r)<=0.01 where w.doc_commitdate between :periodbeg and :periodend and d.doc_type in (6,11,39) and exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id) and gb.barcode is null group by 'Не найден в реестре ЖНВЛС или не верная цена реестра' ,w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price, gb.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Превышение наценки', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --iif(w.price_z>w.price_r*1.1 and w.price_r>0,w.price_r*1.1,w.price_z)*iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1))/100+w.price_o, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and w.price_r<>0 and w.price_z<>0 and w.price_z>0 and w.quant>0 and ( ( not (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=47 and grouptable_id=w.name_id)) and 100*(w.price-w.Price_O)/iif(w.price_z*100/110>w.price_r and w.price_r>0,w.price_r*1.1,w.price_z) >iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1)) ) or ( (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=47 and grouptable_id=w.name_id)) and w.price_r<>0 and w.price_z<>0 and 100*(w.price-w.Price_O)/iif(w.price_z*100/110>w.price_r and w.price_r>0,w.price_r*1.1,w.price_z) > :nac4 ) ) and d.doc_type in (6,11,39) and w.doc_commitdate between :periodbeg and :periodend; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не указана цена завода', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id -- where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=3 and grouptable_id=w.name_id)) and (w.price_z=0 or (w.price_z is null) ) and where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and ((w.price_z between -0.000001 and 0.000001) or (w.price_z is null) ) and w.doc_commitdate between :periodbeg and :periodend and d.doc_type in (6,11,39); insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Не указана цена рестра', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id -- where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=3 and grouptable_id=w.name_id)) and (w.price_r=0 or (w.price_r is null) ) and where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and ((w.price_r between -0.00001 and 0.000001) or (w.price_r is null) ) and w.doc_commitdate between :periodbeg and :periodend and d.doc_type in (6,11,39); insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Превышение наценки', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --iif(w.price_z>w.price_r*1.1 and w.price_r>0,w.price_r*1.1,w.price_z)*iif(w.price_z*100/110>500,:nac3,iif(w.price_z*100/110>50,:nac2,:nac1))/100+w.price_o, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id where (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and (exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=47 and grouptable_id=w.name_id)) and w.price_r<>0 and w.price_z<>0 and 100*(w.price-w.Price_O)/iif(w.price_z*100/110>w.price_r and w.price_r>0,w.price_r*1.1,w.price_z) >:nac4 and w.price_z>0 and d.doc_type in (6,11,39) and w.doc_commitdate between :periodbeg and :periodend; insert into analytic_GNVLS ( ANALYTIC_DOC_ID, VID, NAME_ID, SNAME, IZG_ID, SIZG, COUNTRY_ID, SCOUNTRY, PRICE, --MAXPRICE, SERIA, PART_ID, Price_Z, Price_R, NAC) select :analytic_doc_id, 'Укажите группу ЖНВЛС', w.name_id, w.sname, w.izg_id, w.sizg, w.country_id, w.scountry, w.price, --0, w.seria , w.part_id, w.price_z, w.price_r, w.nac from vw_doc_detail w left join docs d on d.id=w.doc_id left join out$gnvls_barcode gb on (w.bcode_izg = gb.barcode)or(w.barcode = gb.barcode) where (not exists(select id from group_detail where grouptable='PARTS.NAME_ID' and group_id=1 and grouptable_id=w.name_id)) and (trim(gb.barcode)<>'' and gb.barcode is not null) and w.doc_commitdate between :periodbeg and :periodend and d.doc_type in (6,11,39) group by 'Укажите группу ЖНВЛС',w.name_id, w.sname,w.izg_id,w.sizg, w.country_id,w.scountry,w.price,w.seria,w.part_id,w.price_z,w.price_r,w.nac; end^ SET TERM ; ^ /* Following GRANT statetements are generated automatically */ GRANT INSERT ON ANALYTIC_GNVLS TO PROCEDURE PR_GNVLSCHECK_SOURCE2; GRANT SELECT ON VW_DOC_DETAIL TO PROCEDURE PR_GNVLSCHECK_SOURCE2; GRANT SELECT ON DOCS TO PROCEDURE PR_GNVLSCHECK_SOURCE2; GRANT SELECT ON OUT$GNVLS_BARCODE TO PROCEDURE PR_GNVLSCHECK_SOURCE2; GRANT SELECT ON GROUP_DETAIL TO PROCEDURE PR_GNVLSCHECK_SOURCE2; /* Existing privileges on this procedure */ GRANT EXECUTE ON PROCEDURE PR_GNVLSCHECK_SOURCE2 TO SYSDBA; SET TERM ^ ; create or alter procedure PR_GNVLSCHECK ( ANALYTIC_DOC_ID DM_ID, SOURCE DM_STATUS, PERIODBEG DM_DATE, PERIODEND DM_DATE) returns ( VERB DM_TEXT1024) as declare variable PARAM_VALUE DM_DOUBLE; declare variable PARAM_ID DM_TEXT; declare variable NAC3 DM_DOUBLE; declare variable NAC2 DM_DOUBLE; declare variable NAC1 DM_DOUBLE; declare variable NAC4 DM_DOUBLE; begin DELETE FROM analytic_GNVLS ad where ad.analytic_doc_id in (select id from analytic_docs a where a.analytic_type=3 and CURRENT_DATE-Cast(a.insertdt as dm_date)>=31); DELETE from analytic_docs a where a.analytic_type=3 and CURRENT_DATE-Cast(a.insertdt as dm_date)>=31; for select param_id,Cast(REPLACE(param_value,',','.') as dm_double) as param_value from PARAMS where parent_id =-50 into :param_id, :param_value do begin if (param_id='NAC1') then nac1 = param_value; if (param_id='NAC2') then nac2 = param_value; if (param_id='NAC3') then nac3 = param_value; if (param_id='NAC4') then nac4 = param_value; end if (:source=0) then execute procedure PR_GNVLSCHECK_SOURCE0( :ANALYTIC_DOC_ID, :PERIODBEG, :PERIODEND, :nac1, :nac2, :nac3, :nac4); if (:source=1) then execute procedure PR_GNVLSCHECK_SOURCE1( :ANALYTIC_DOC_ID, :PERIODBEG, :PERIODEND, :nac1, :nac2, :nac3, :nac4); if (:source=2) then execute procedure PR_GNVLSCHECK_SOURCE2( :ANALYTIC_DOC_ID, :PERIODBEG, :PERIODEND, :nac1, :nac2, :nac3, :nac4); verb='Готово'; delete from analytic_GNVLS ag where (select gd.id from group_detail gd left join groups g on g.id=gd.group_id where gd.grouptable_id=ag.PART_ID and gd.grouptable='PARTS' and g.caption containing 'исклю') is not null; suspend; end^ SET TERM ; ^ /* Following GRANT statetements are generated automatically */ GRANT SELECT,DELETE ON ANALYTIC_GNVLS TO PROCEDURE PR_GNVLSCHECK; GRANT SELECT,DELETE ON ANALYTIC_DOCS TO PROCEDURE PR_GNVLSCHECK; GRANT SELECT ON PARAMS TO PROCEDURE PR_GNVLSCHECK; GRANT EXECUTE ON PROCEDURE PR_GNVLSCHECK_SOURCE0 TO PROCEDURE PR_GNVLSCHECK; GRANT EXECUTE ON PROCEDURE PR_GNVLSCHECK_SOURCE1 TO PROCEDURE PR_GNVLSCHECK; GRANT EXECUTE ON PROCEDURE PR_GNVLSCHECK_SOURCE2 TO PROCEDURE PR_GNVLSCHECK; GRANT SELECT ON GROUP_DETAIL TO PROCEDURE PR_GNVLSCHECK; GRANT SELECT ON GROUPS TO PROCEDURE PR_GNVLSCHECK; /* Existing privileges on this procedure */ GRANT EXECUTE ON PROCEDURE PR_GNVLSCHECK TO SYSDBA;
теги
PR_GNVLSCHECK, проверка на, ЖНВЛС, ЖВ