| 1 | спочатку в t_reports вибираємо наш звіт, міняємо значення IS_OLAP на 4
|
|---|
| 2 | йдемо в t_interfaces_v1 ,Data створюємо нове поле з категорією olap, module_id- report_номер, в XML створюємо(приклад):
|
|---|
| 3 | <table>report_номер_dic</table>
|
|---|
| 4 | <parameters>none</parameters>
|
|---|
| 5 |
|
|---|
| 6 | <schema>
|
|---|
| 7 | <name>Товари+магазини+залишок</name>
|
|---|
| 8 | <c>objects_name</c>
|
|---|
| 9 | <r>nomen_name</r>
|
|---|
| 10 | <d>rest</d>
|
|---|
| 11 | <d>rest_sum</d>
|
|---|
| 12 | </schema>
|
|---|
| 13 |
|
|---|
| 14 | <schema>
|
|---|
| 15 | <name>Виробник(ТМ)+товари+магазин+залишок</name>
|
|---|
| 16 | <c>objects_name</c>
|
|---|
| 17 | <r>maker_name</r>
|
|---|
| 18 | <r>nomen_name</r>
|
|---|
| 19 | <d>rest</d>
|
|---|
| 20 | <d>rest_sum</d>
|
|---|
| 21 | </schema>
|
|---|
| 22 |
|
|---|
| 23 | <schema>
|
|---|
| 24 | <name>Товари+магазини+ціни</name>
|
|---|
| 25 | <c>objects_name</c>
|
|---|
| 26 | <r>nomen_name</r>
|
|---|
| 27 | <d>last_inprice</d>
|
|---|
| 28 | <d>out_price</d>
|
|---|
| 29 | </schema>
|
|---|
| 30 | яке вибираємо із T_REPORT_CHEMAS по report_id- (номер), вибираємо(ctrl+C) з поля NAME, та XML і переносимо (Ctrl+V) в <name>Назва</name> та
|
|---|
| 31 | <schema>
|
|---|
| 32 | <name>Назва</name>
|
|---|
| 33 | тіло
|
|---|
| 34 | </schema>
|
|---|
| 35 |
|
|---|
| 36 | <schema>
|
|---|
| 37 | <name>Назва1</name>
|
|---|
| 38 | тіло1
|
|---|
| 39 | </schema>
|
|---|
| 40 | зберігаємо
|
|---|
| 41 |
|
|---|
| 42 | Наступний крок:
|
|---|
| 43 | Створюєм нове поблицю (в T_INTERFACES_V1) gategory_id- table, module_id- report_номер_dic, XML будемо вставляти код за наступним принципом:
|
|---|
| 44 | (<sql>select odoc_date, doc_num, doc_mark, otypedoc_name, nomen_code, nomen_name, oclient_name, oowner_name, out_price,
|
|---|
| 45 | oi_kilk, oi_price, oil_out_price, oi_in_sum_pdv, oi_sum_markup_pdv, oi_out_sum_pdv, oil_out_sum_pdv,
|
|---|
| 46 | oil_sum_markup_pdv, oi_in_sum
|
|---|
| 47 | from pr_in_documents(:idate0, :idate1)</sql>
|
|---|
| 48 | <field name="odoc_date" type="date">Дата документа</field>
|
|---|
| 49 | <field name="doc_num" type="string">Номер документа</field>
|
|---|
| 50 | <field name="doc_mark" type="string">Примітка</field>
|
|---|
| 51 | <field name="otypedoc_name" type="string">Тип документа</field>
|
|---|
| 52 | <field name="nomen_code" type="string">Код товару</field>
|
|---|
| 53 | <field name="nomen_name" type="string">Назва товару</field>
|
|---|
| 54 | <field name="oclient_name" type="string">Постачальник</field>
|
|---|
| 55 | <field name="oowner_name" type="string">Власник</field>
|
|---|
| 56 | <field name="oi_kilk" type="float">К-ть</field>
|
|---|
| 57 | <field name="oi_in_sum_pdv" type="float">СЗ з ПДВ</field>
|
|---|
| 58 | <field name="oi_price" type="float">ЦЗ з ПДВ</field>
|
|---|
| 59 | <field name="oi_in_sum" type="float">СЗ</field>
|
|---|
| 60 | <field name="out_price" type="float">ЦР з ПДВ</field>
|
|---|
| 61 | <field name="oi_out_sum_pdv" type="float">СР з ПДВ</field>
|
|---|
| 62 | <field name="oi_sum_markup_pdv" type="float">СН з ПДВ</field>
|
|---|
| 63 | <field name="oil_out_price" type="float">Нова ЦР з ПДВ</field>
|
|---|
| 64 | <field name="oil_out_sum_pdv" type="float">Нова СР з ПДВ</field>
|
|---|
| 65 | <field name="oil_sum_markup_pdv" type="float">Нова СН з ПДВ</field>) приклад
|
|---|
| 66 | де
|
|---|
| 67 | <sql> select тіло взяте із процедури </sql>
|
|---|
| 68 | сама прецедура:
|
|---|
| 69 | створюємо нову процедуру називаємо її ... (в моєму випадку PR_IN_DOCUMENTS):
|
|---|
| 70 | (SET TERM ^ ;
|
|---|
| 71 |
|
|---|
| 72 | create or alter procedure PR_IN_DOCUMENTS (
|
|---|
| 73 | IDATE0 date,
|
|---|
| 74 | IDATE1 date)
|
|---|
| 75 | returns (
|
|---|
| 76 | ODOC_DATE date,
|
|---|
| 77 | DOC_NUM varchar(14),
|
|---|
| 78 | DOC_MARK varchar(14),
|
|---|
| 79 | OTYPEDOC_NAME varchar(30),
|
|---|
| 80 | NOMEN_CODE varchar(7),
|
|---|
| 81 | NOMEN_NAME varchar(80),
|
|---|
| 82 | OCLIENT_NAME varchar(80),
|
|---|
| 83 | OOWNER_NAME varchar(80),
|
|---|
| 84 | OUT_PRICE double precision,
|
|---|
| 85 | OI_KILK double precision,
|
|---|
| 86 | OI_PRICE double precision,
|
|---|
| 87 | OIL_OUT_PRICE double precision,
|
|---|
| 88 | OI_IN_SUM_PDV double precision,
|
|---|
| 89 | OI_SUM_MARKUP_PDV double precision,
|
|---|
| 90 | OI_OUT_SUM_PDV double precision,
|
|---|
| 91 | OIL_OUT_SUM_PDV double precision,
|
|---|
| 92 | OIL_SUM_MARKUP_PDV double precision,
|
|---|
| 93 | OI_IN_SUM double precision)
|
|---|
| 94 | as
|
|---|
| 95 | begin
|
|---|
| 96 | for select rr.odoc_date as odoc_date,
|
|---|
| 97 | rr.doc_num,
|
|---|
| 98 | rr.doc_mark,
|
|---|
| 99 | rr.otypedoc_name as otypedoc_name,
|
|---|
| 100 | n.nomen_code,
|
|---|
| 101 | n.nomen_name,
|
|---|
| 102 | rr.oi_kilk,
|
|---|
| 103 | rr.oi_price,
|
|---|
| 104 | rr.oi_in_sum_pdv,
|
|---|
| 105 | rr.oi_in_sum,
|
|---|
| 106 | n.out_price,
|
|---|
| 107 | around(rr.oi_kilk * n.out_price) as oi_out_sum_pdv,
|
|---|
| 108 | around(rr.oi_kilk * n.out_price) - rr.oi_in_sum_pdv as oi_sum_markup_pdv,
|
|---|
| 109 | cl.name || ' (' || cl.zkpo || ')' as oclient_name,
|
|---|
| 110 | coalesce(rr.new_out_price, rr.old_out_price) as oil_out_price,
|
|---|
| 111 | around(rr.oi_kilk * coalesce(rr.new_out_price, rr.old_out_price)) as oil_out_sum_pdv,
|
|---|
| 112 | around(rr.oi_kilk * coalesce(rr.new_out_price, rr.old_out_price)) - rr.oi_in_sum_pdv as oil_sum_markup_pdv,
|
|---|
| 113 | o.name as oowner_name
|
|---|
| 114 | from
|
|---|
| 115 | (
|
|---|
| 116 | select dr.docrec_id,
|
|---|
| 117 | d.doc_date as odoc_date,
|
|---|
| 118 | d.doc_num,
|
|---|
| 119 | d.doc_mark,
|
|---|
| 120 | d.objects_id as oclient_id,
|
|---|
| 121 | dt.typedoc_name as otypedoc_name,
|
|---|
| 122 | dr.nomen_id as tnomen_id,
|
|---|
| 123 | dr.kilk as oi_kilk,
|
|---|
| 124 | dr.price as oi_price,
|
|---|
| 125 | dr.insum_pdv as oi_in_sum_pdv,
|
|---|
| 126 | dr.insum as oi_in_sum,
|
|---|
| 127 | (select oout_price from PS_GET_OUT_PRICE_AT(dr.nomen_id, d.date_cr)) as new_out_price,
|
|---|
| 128 | (select first(1) pl.out_price from t_price_logs pl where pl.date_time < d.date_cr
|
|---|
| 129 | and pl.nomen_id = dr.nomen_id order by pl.date_time desc) as old_out_price,
|
|---|
| 130 | d.owner_id
|
|---|
| 131 | from t_documents d join t_document_types dt on (dt.typedoc_id = d.typedoc_id and
|
|---|
| 132 | d.typedoc_id <> 16 and d.clients_id = 1 and d.doc_lock in (1,2) and d.doc_date between :idate0 and :idate1)
|
|---|
| 133 | join t_doc_records dr on (d.document_id = dr.document_id)
|
|---|
| 134 | ) rr left join t_nomens n on (rr.tnomen_id = n.nomen_id)
|
|---|
| 135 | left join t_clients cl on rr.oclient_id = cl.clients_id
|
|---|
| 136 | left join t_clients o on rr.owner_id = o.clients_id
|
|---|
| 137 | into odoc_date,doc_num,doc_mark,otypedoc_name,nomen_code,nomen_name,
|
|---|
| 138 | oi_kilk,oi_price,oi_in_sum_pdv,oi_in_sum,out_price,
|
|---|
| 139 | oi_out_sum_pdv, oi_sum_markup_pdv, oclient_name, oil_out_price,
|
|---|
| 140 | oil_out_sum_pdv, oil_sum_markup_pdv, oowner_name
|
|---|
| 141 | do begin
|
|---|
| 142 | suspend;
|
|---|
| 143 | end
|
|---|
| 144 | end^
|
|---|
| 145 |
|
|---|
| 146 | SET TERM ; ^
|
|---|
| 147 |
|
|---|
| 148 | /* Following GRANT statetements are generated automatically */
|
|---|
| 149 |
|
|---|
| 150 | GRANT EXECUTE ON PROCEDURE PS_GET_OUT_PRICE_AT TO PROCEDURE PR_IN_DOCUMENTS;
|
|---|
| 151 | GRANT SELECT ON T_PRICE_LOGS TO PROCEDURE PR_IN_DOCUMENTS;
|
|---|
| 152 | GRANT SELECT ON T_DOCUMENTS TO PROCEDURE PR_IN_DOCUMENTS;
|
|---|
| 153 | GRANT SELECT ON T_DOCUMENT_TYPES TO PROCEDURE PR_IN_DOCUMENTS;
|
|---|
| 154 | GRANT SELECT ON T_DOC_RECORDS TO PROCEDURE PR_IN_DOCUMENTS;
|
|---|
| 155 | GRANT SELECT ON T_NOMENS TO PROCEDURE PR_IN_DOCUMENTS;
|
|---|
| 156 | GRANT SELECT ON T_CLIENTS TO PROCEDURE PR_IN_DOCUMENTS;
|
|---|
| 157 |
|
|---|
| 158 | /* Existing privileges on this procedure */
|
|---|
| 159 |
|
|---|
| 160 | GRANT EXECUTE ON PROCEDURE PR_IN_DOCUMENTS TO "PUBLIC";
|
|---|
| 161 | GRANT EXECUTE ON PROCEDURE PR_IN_DOCUMENTS TO SYSDBA;)
|
|---|
| 162 | тіло коду берем із T_REPORTS, report_id- номер процедури, вибираємо (ctrl+C) (у моєму випадку 7)
|
|---|
| 163 | буде:
|
|---|
| 164 | (select rr.odoc_date as odoc_date,
|
|---|
| 165 | rr.doc_num,
|
|---|
| 166 | rr.doc_mark,
|
|---|
| 167 | rr.otypedoc_name as otypedoc_name,
|
|---|
| 168 | n.nomen_code,
|
|---|
| 169 | n.nomen_name,
|
|---|
| 170 | rr.oi_kilk,
|
|---|
| 171 | rr.oi_price,
|
|---|
| 172 | rr.oi_in_sum_pdv,
|
|---|
| 173 | rr.oi_in_sum,
|
|---|
| 174 | n.out_price,
|
|---|
| 175 | around(rr.oi_kilk * n.out_price) as oi_out_sum_pdv,
|
|---|
| 176 | around(rr.oi_kilk * n.out_price) - rr.oi_in_sum_pdv as oi_sum_markup_pdv,
|
|---|
| 177 | cl.name || ' (' || cl.zkpo || ')' as oclient_name,
|
|---|
| 178 | coalesce(rr.new_out_price, rr.old_out_price) as oil_out_price,
|
|---|
| 179 | around(rr.oi_kilk * coalesce(rr.new_out_price, rr.old_out_price)) as oil_out_sum_pdv,
|
|---|
| 180 | around(rr.oi_kilk * coalesce(rr.new_out_price, rr.old_out_price)) - rr.oi_in_sum_pdv as oil_sum_markup_pdv,
|
|---|
| 181 | o.name as oowner_name
|
|---|
| 182 | from
|
|---|
| 183 | (
|
|---|
| 184 | select dr.docrec_id,
|
|---|
| 185 | d.doc_date as odoc_date,
|
|---|
| 186 | d.doc_num,
|
|---|
| 187 | d.doc_mark,
|
|---|
| 188 | d.objects_id as oclient_id,
|
|---|
| 189 | dt.typedoc_name as otypedoc_name,
|
|---|
| 190 | dr.nomen_id as tnomen_id,
|
|---|
| 191 | dr.kilk as oi_kilk,
|
|---|
| 192 | dr.price as oi_price,
|
|---|
| 193 | dr.insum_pdv as oi_in_sum_pdv,
|
|---|
| 194 | dr.insum as oi_in_sum,
|
|---|
| 195 | (select oout_price from PS_GET_OUT_PRICE_AT(dr.nomen_id, d.date_cr)) as new_out_price,
|
|---|
| 196 | (select first(1) pl.out_price from t_price_logs pl where pl.date_time < d.date_cr
|
|---|
| 197 | and pl.nomen_id = dr.nomen_id order by pl.date_time desc) as old_out_price,
|
|---|
| 198 | d.owner_id
|
|---|
| 199 | from t_documents d join t_document_types dt on (dt.typedoc_id = d.typedoc_id and
|
|---|
| 200 | d.typedoc_id <> 16 and d.clients_id = 1 and d.doc_lock in (1,2) and d.doc_date between :idate0 and :idate1)
|
|---|
| 201 | join t_doc_records dr on (d.document_id = dr.document_id)
|
|---|
| 202 | ) rr left join t_nomens n on (rr.tnomen_id = n.nomen_id)
|
|---|
| 203 | left join t_clients cl on rr.oclient_id = cl.clients_id
|
|---|
| 204 | left join t_clients o on rr.owner_id = o.clients_id)
|
|---|
| 205 | при створені процедури добавляємо поле:
|
|---|
| 206 | into odoc_date,doc_num,doc_mark,otypedoc_name,nomen_code,nomen_name,
|
|---|
| 207 | oi_kilk,oi_price,oi_in_sum_pdv,oi_in_sum,out_price,
|
|---|
| 208 | oi_out_sum_pdv, oi_sum_markup_pdv, oclient_name, oil_out_price,
|
|---|
| 209 | oil_out_sum_pdv, oil_sum_markup_pdv, oowner_name
|
|---|
| 210 | do begin
|
|---|
| 211 | suspend;
|
|---|
| 212 | end
|
|---|
| 213 | end
|
|---|
| 214 |
|
|---|
| 215 |
|
|---|
| 216 | вставляємо в процедуру попередньо додавши input та output parameters які знаходяться в самому скрипті(значення шукаємо в інших таблицях бази
|
|---|
| 217 | + перед тим виконуємо sql запрос тіла щоб знати точні дані):
|
|---|
| 218 | результат:
|
|---|
| 219 | create or alter procedure PR_IN_DOCUMENTS (
|
|---|
| 220 | IDATE0 date,
|
|---|
| 221 | IDATE1 date)
|
|---|
| 222 | returns (
|
|---|
| 223 | ODOC_DATE date,
|
|---|
| 224 | DOC_NUM varchar(14),
|
|---|
| 225 | DOC_MARK varchar(14),
|
|---|
| 226 | OTYPEDOC_NAME varchar(30),
|
|---|
| 227 | NOMEN_CODE varchar(7),
|
|---|
| 228 | NOMEN_NAME varchar(80),
|
|---|
| 229 | OCLIENT_NAME varchar(80),
|
|---|
| 230 | OOWNER_NAME varchar(80),
|
|---|
| 231 | OUT_PRICE double precision,
|
|---|
| 232 | OI_KILK double precision,
|
|---|
| 233 | OI_PRICE double precision,
|
|---|
| 234 | OIL_OUT_PRICE double precision,
|
|---|
| 235 | OI_IN_SUM_PDV double precision,
|
|---|
| 236 | OI_SUM_MARKUP_PDV double precision,
|
|---|
| 237 | OI_OUT_SUM_PDV double precision,
|
|---|
| 238 | OIL_OUT_SUM_PDV double precision,
|
|---|
| 239 | OIL_SUM_MARKUP_PDV double precision,
|
|---|
| 240 | OI_IN_SUM double precision)
|
|---|
| 241 | as
|
|---|
| 242 | begin
|
|---|
| 243 | for select rr.odoc_date as odoc_date,
|
|---|
| 244 | rr.doc_num,
|
|---|
| 245 | rr.doc_mark,
|
|---|
| 246 | rr.otypedoc_name as otypedoc_name,
|
|---|
| 247 | n.nomen_code,
|
|---|
| 248 | n.nomen_name,
|
|---|
| 249 | rr.oi_kilk,
|
|---|
| 250 | rr.oi_price,
|
|---|
| 251 | rr.oi_in_sum_pdv,
|
|---|
| 252 | rr.oi_in_sum,
|
|---|
| 253 | n.out_price,
|
|---|
| 254 | around(rr.oi_kilk * n.out_price) as oi_out_sum_pdv,
|
|---|
| 255 | around(rr.oi_kilk * n.out_price) - rr.oi_in_sum_pdv as oi_sum_markup_pdv,
|
|---|
| 256 | cl.name || ' (' || cl.zkpo || ')' as oclient_name,
|
|---|
| 257 | coalesce(rr.new_out_price, rr.old_out_price) as oil_out_price,
|
|---|
| 258 | around(rr.oi_kilk * coalesce(rr.new_out_price, rr.old_out_price)) as oil_out_sum_pdv,
|
|---|
| 259 | around(rr.oi_kilk * coalesce(rr.new_out_price, rr.old_out_price)) - rr.oi_in_sum_pdv as oil_sum_markup_pdv,
|
|---|
| 260 | o.name as oowner_name
|
|---|
| 261 | from
|
|---|
| 262 | (
|
|---|
| 263 | select dr.docrec_id,
|
|---|
| 264 | d.doc_date as odoc_date,
|
|---|
| 265 | d.doc_num,
|
|---|
| 266 | d.doc_mark,
|
|---|
| 267 | d.objects_id as oclient_id,
|
|---|
| 268 | dt.typedoc_name as otypedoc_name,
|
|---|
| 269 | dr.nomen_id as tnomen_id,
|
|---|
| 270 | dr.kilk as oi_kilk,
|
|---|
| 271 | dr.price as oi_price,
|
|---|
| 272 | dr.insum_pdv as oi_in_sum_pdv,
|
|---|
| 273 | dr.insum as oi_in_sum,
|
|---|
| 274 | (select oout_price from PS_GET_OUT_PRICE_AT(dr.nomen_id, d.date_cr)) as new_out_price,
|
|---|
| 275 | (select first(1) pl.out_price from t_price_logs pl where pl.date_time < d.date_cr
|
|---|
| 276 | and pl.nomen_id = dr.nomen_id order by pl.date_time desc) as old_out_price,
|
|---|
| 277 | d.owner_id
|
|---|
| 278 | from t_documents d join t_document_types dt on (dt.typedoc_id = d.typedoc_id and
|
|---|
| 279 | d.typedoc_id <> 16 and d.clients_id = 1 and d.doc_lock in (1,2) and d.doc_date between :idate0 and :idate1)
|
|---|
| 280 | join t_doc_records dr on (d.document_id = dr.document_id)
|
|---|
| 281 | ) rr left join t_nomens n on (rr.tnomen_id = n.nomen_id)
|
|---|
| 282 | left join t_clients cl on rr.oclient_id = cl.clients_id
|
|---|
| 283 | left join t_clients o on rr.owner_id = o.clients_id
|
|---|
| 284 | into odoc_date,doc_num,doc_mark,otypedoc_name,nomen_code,nomen_name,
|
|---|
| 285 | oi_kilk,oi_price,oi_in_sum_pdv,oi_in_sum,out_price,
|
|---|
| 286 | oi_out_sum_pdv, oi_sum_markup_pdv, oclient_name, oil_out_price,
|
|---|
| 287 | oil_out_sum_pdv, oil_sum_markup_pdv, oowner_name
|
|---|
| 288 | do begin
|
|---|
| 289 | suspend;
|
|---|
| 290 | end
|
|---|
| 291 | end
|
|---|
| 292 |
|
|---|
| 293 | (select * from T_INTERFACES_V1 where module_id like 'report_7%')- для швикого пошуку нашого звіту
|
|---|
| 294 |
|
|---|
| 295 | стаєм на процедуру ctrl+C у новому вікні вибираємо select отримуємо :
|
|---|
| 296 | select ODOC_DATE, DOC_NUM, DOC_MARK, OTYPEDOC_NAME, NOMEN_CODE, NOMEN_NAME, OCLIENT_NAME, OOWNER_NAME, OUT_PRICE,
|
|---|
| 297 | OI_KILK, OI_PRICE, OIL_OUT_PRICE, OI_IN_SUM_PDV, OI_SUM_MARKUP_PDV, OI_OUT_SUM_PDV, OIL_OUT_SUM_PDV,
|
|---|
| 298 | OIL_SUM_MARKUP_PDV, OI_IN_SUM
|
|---|
| 299 | from PR_IN_DOCUMENTS(:IDATE0, :IDATE1)
|
|---|
| 300 | що в подальшому вставляємо в таблицю з T_INTERFACES_V1 :
|
|---|
| 301 | <sql>select odocrec_id, onomen_code, onomen_name, okilk, oout_price_pdv, osum_out, osum_out_pdv, osum_in,
|
|---|
| 302 | osum_in_pdv, osum_pdv, oout_price, otypepdv_id, onomen_price,
|
|---|
| 303 | odisc_persent, oshort_name, oadded_scores, ospent_scores, osumma_mod from pkl_documents_detail({:iid})</sql>
|
|---|
| 304 |
|
|---|
| 305 |
|
|---|
| 306 | зосталися парамерти :
|
|---|
| 307 | <param name="iid" type="int"></param>
|
|---|
| 308 | <field name="odocrec_id" type="int" role="pk" aggr="count">ID</field>
|
|---|
| 309 | <field name="onomen_code" type="string">Код товару</field>
|
|---|
| 310 | <field name="onomen_name" type="string">Назва товару</field>
|
|---|
| 311 | <field name="okilk" type="float" format="%.03f">К-ть</field>
|
|---|
| 312 | <field name="oout_price_pdv" type="float" format="%.02f">ЦР(з ПДВ)</field>
|
|---|
| 313 | <field name="osum_in_pdv" type="float" format="%.02f" aggr="sum">СЗ(з ПДВ)</field>
|
|---|
| 314 | <field name="osum_out_pdv" type="float" format="%.02f" aggr="sum">СР(з ПДВ)</field>
|
|---|
| 315 | <field name="oadded_scores" type="float" format="%.02f" aggr="sum">Бонусів +</field>
|
|---|
| 316 | <field name="ospent_scores" type="float" format="%.02f" aggr="sum">Бонусів -</field>
|
|---|
| 317 | <field name="osumma_mod" type="float" format="%.02f" aggr="sum">Знижка</field>
|
|---|
| 318 | які ми вибираємо окремим запитом select '<field name="'||name||'" type="">'||caption||'</field>' from t_reportcaptions where report_id = 7
|
|---|
| 319 | для просто вставки та правимо порожні поля type
|
|---|
| 320 | Підкінець
|
|---|
| 321 | Створюємо скрипт обнови:
|
|---|
| 322 |
|
|---|
| 323 | (
|
|---|
| 324 | UPDATE T_REPORTS
|
|---|
| 325 | SET IS_OLAP = 4
|
|---|
| 326 | WHERE (REPORT_ID = 9);
|
|---|
| 327 | commit work;
|
|---|
| 328 |
|
|---|
| 329 | UPDATE OR INSERT INTO T_INTERFACES_V1 (CATEGORY_ID, MODULE_ID, XML, WEIGHT, IS_ACTIVE, ACCESS_ID, VER)
|
|---|
| 330 | VALUES ('olap', 'report_9', '<table>report_9_dic</table>
|
|---|
| 331 |
|
|---|
| 332 | <schema>
|
|---|
| 333 | <name>Скорочена</name>
|
|---|
| 334 | <r>nomen_prod_group_id</r>
|
|---|
| 335 | <r>name</r>
|
|---|
| 336 | <d>b_rest</d>
|
|---|
| 337 | <d>move_in</d>
|
|---|
| 338 | <d>money_move_in</d>
|
|---|
| 339 | <d>move_out</d>
|
|---|
| 340 | <d>money_move_out</d>
|
|---|
| 341 | <d>e_rest</d>
|
|---|
| 342 | </schema>
|
|---|
| 343 |
|
|---|
| 344 | <schema>
|
|---|
| 345 | <name>Розширена</name>
|
|---|
| 346 | <r>nomen_prod_group_id</r>
|
|---|
| 347 | <r>name</r>
|
|---|
| 348 | <r>nomen_name</r>
|
|---|
| 349 | <d>b_rest</d>
|
|---|
| 350 | <d>move_in</d>
|
|---|
| 351 | <d>money_move_in</d>
|
|---|
| 352 | <d>move_out</d>
|
|---|
| 353 | <d>money_move_out</d>
|
|---|
| 354 | <d>e_rest</d>
|
|---|
| 355 | </schema>', 0, 0, NULL, 0)
|
|---|
| 356 | MATCHING (CATEGORY_ID, MODULE_ID, XML, VER);
|
|---|
| 357 | COMMIT WORK;
|
|---|
| 358 |
|
|---|
| 359 | UPDATE OR INSERT INTO T_INTERFACES_V1 (CATEGORY_ID, MODULE_ID, XML, WEIGHT, IS_ACTIVE, ACCESS_ID, VER)
|
|---|
| 360 | VALUES ('table', 'report_9_dic', '<sql>select nomen_id, nomen_code, nomen_name, brutto, nomen_prod_group_id, uktz, name, b_rest, e_rest, move_in,
|
|---|
| 361 | money_move_in, money_move_in_sr, move_out, money_move_out
|
|---|
| 362 | from pr_in_documentsnine(:idate0, :idate1)</sql>
|
|---|
| 363 | <field name="nomen_id" type="string">ID товару</field>
|
|---|
| 364 | <field name="nomen_code" type="string">Код товару</field>
|
|---|
| 365 | <field name="nomen_name" type="string">Назва товару</field>
|
|---|
| 366 | <field name="nomen_prod_group_id" type="string">Код виду продукції</field>
|
|---|
| 367 | <field name="uktz" type="string">Код продукції</field>
|
|---|
| 368 | <field name="name" type="string">Вид продукції</field>
|
|---|
| 369 | <field name="brutto" type="float">Об"єм л.</field>
|
|---|
| 370 | <field name="b_rest" type="float">Залишок на поч, дкл.</field>
|
|---|
| 371 | <field name="move_in" type="float">Прихід, дкл.</field>
|
|---|
| 372 | <field name="move_out" type="float">Реалізація, дкл.</field>
|
|---|
| 373 | <field name="e_rest" type="float">Залишок на кін, дкл.</field>
|
|---|
| 374 | <field name="money_move_in" type="float">Прихід, грн.</field>
|
|---|
| 375 | <field name="money_move_out" type="float">Реалізація, грн</field>
|
|---|
| 376 | <field name="money_move_in_sr" type="float">Прихід по ЦР, грн</field>', 0, 1, NULL, 0)
|
|---|
| 377 | MATCHING (CATEGORY_ID, MODULE_ID, XML, VER);
|
|---|
| 378 |
|
|---|
| 379 | COMMIT WORK;
|
|---|
| 380 |
|
|---|
| 381 | SET TERM ^ ;
|
|---|
| 382 |
|
|---|
| 383 | create or alter procedure PR_IN_DOCUMENTSNINE (
|
|---|
| 384 | IDATE0 date,
|
|---|
| 385 | IDATE1 date)
|
|---|
| 386 | returns (
|
|---|
| 387 | NOMEN_ID varchar(7),
|
|---|
| 388 | NOMEN_CODE varchar(7),
|
|---|
| 389 | NOMEN_NAME varchar(80),
|
|---|
| 390 | BRUTTO numeric(9,3),
|
|---|
| 391 | NOMEN_PROD_GROUP_ID integer,
|
|---|
| 392 | UKTZ varchar(15),
|
|---|
| 393 | NAME varchar(120),
|
|---|
| 394 | B_REST double precision,
|
|---|
| 395 | E_REST double precision,
|
|---|
| 396 | MOVE_IN double precision,
|
|---|
| 397 | MONEY_MOVE_IN double precision,
|
|---|
| 398 | MONEY_MOVE_IN_SR double precision,
|
|---|
| 399 | MOVE_OUT double precision,
|
|---|
| 400 | MONEY_MOVE_OUT double precision)
|
|---|
| 401 | as
|
|---|
| 402 | begin
|
|---|
| 403 | for select rr.nomen_id,
|
|---|
| 404 | n.nomen_code, n.nomen_name, n.brutto, n.nomen_prod_group_id, n.uktz,
|
|---|
| 405 | pg.name,
|
|---|
| 406 | sum(rr.b_rest) * n.brutto / 10.0 as b_rest, sum(rr.move_in) * n.brutto / 10.0 as move_in,
|
|---|
| 407 | sum(rr.money_move_in) as money_move_in,
|
|---|
| 408 | sum(rr.money_move_in_sr) as money_move_in_sr,
|
|---|
| 409 | sum(rr.move_out) * n.brutto / 10.0 as move_out, sum(rr.money_move_out) as money_move_out,
|
|---|
| 410 | sum(rr.e_rest) * n.brutto / 10.0 as e_rest
|
|---|
| 411 | from
|
|---|
| 412 | (
|
|---|
| 413 | select nomen_id,
|
|---|
| 414 | r.rest as b_rest,
|
|---|
| 415 | 0.0 as move_in,
|
|---|
| 416 | 0.0 as money_move_in,
|
|---|
| 417 | 0.0 as money_move_in_sr,
|
|---|
| 418 | 0.0 as move_out,
|
|---|
| 419 | 0.0 as money_move_out,
|
|---|
| 420 | r.rest as e_rest from t_rests r
|
|---|
| 421 | union all
|
|---|
| 422 | select dr.nomen_id,
|
|---|
| 423 | iif(d.objects_id = 1, dr.kilk, -dr.kilk) as b_rest,
|
|---|
| 424 | iif((d.typedoc_id = 1) and (d.doc_date between :idate0 and :idate1), dr.kilk, 0) as move_in,
|
|---|
| 425 | iif((d.typedoc_id = 1) and (d.doc_date between :idate0 and :idate1), ss.osum_pdv, 0) as money_move_in,
|
|---|
| 426 | iif((d.typedoc_id = 1) and (d.doc_date between :idate0 and :idate1),
|
|---|
| 427 | (select dr.kilk * oout_price from PS_GET_OUT_PRICE_AT(dr.nomen_id, d.date_cr)), 0) as money_move_in_sr,
|
|---|
| 428 | iif((d.typedoc_id = 11) and (d.doc_date between :idate0 and :idate1) and
|
|---|
| 429 | dr.device_id = 2, dr.kilk, 0) as move_out,
|
|---|
| 430 | iif((d.typedoc_id = 11) and (d.doc_date between :idate0 and :idate1) and
|
|---|
| 431 | dr.device_id = 2, ss.osum_pdv, 0) as money_move_out,
|
|---|
| 432 | iif(d.doc_date > :idate1, iif(d.objects_id = 1, dr.kilk, -dr.kilk), 0) as e_rest
|
|---|
| 433 | from t_doc_records dr join t_documents d on dr.document_id = d.document_id
|
|---|
| 434 | left join ps_get_sum_v1(dr.docrec_id, 'r', 0) ss on 1=1
|
|---|
| 435 | where d.doc_date >= :idate0
|
|---|
| 436 | ) rr join t_nomens n on rr.nomen_id = n.nomen_id and n.sg_id in (1,6,7)
|
|---|
| 437 | left join t_nomen_prod_groups pg on pg.nomen_prod_group_id = n.nomen_prod_group_id
|
|---|
| 438 | group by rr.nomen_id, n.nomen_code, n.nomen_name, n.brutto, n.nomen_prod_group_id, n.uktz, pg.name
|
|---|
| 439 | into nomen_id, nomen_code, nomen_name, brutto, nomen_prod_group_id, uktz, name, b_rest, move_in,
|
|---|
| 440 | money_move_in, money_move_in_sr, move_out, money_move_out,/*rest,*/ e_rest
|
|---|
| 441 | do begin
|
|---|
| 442 | suspend;
|
|---|
| 443 | end
|
|---|
| 444 | end^
|
|---|
| 445 |
|
|---|
| 446 | SET TERM ; ^
|
|---|
| 447 |
|
|---|
| 448 | GRANT EXECUTE ON PROCEDURE PR_IN_DOCUMENTSNINE TO "PUBLIC";
|
|---|
| 449 | )
|
|---|
| 450 |
|
|---|
| 451 | вибираємо запросом select * from T_INTERFACES_V1 where module_id like 'report_номер%'
|
|---|
| 452 | опісля export data inti sript (три верхні, одне нижнє- categori, module_id, xml, ver)
|
|---|
| 453 | дописуємо зверху (UPDATE T_REPORTS
|
|---|
| 454 | SET IS_OLAP = 4
|
|---|
| 455 | WHERE (REPORT_ID = номер);
|
|---|
| 456 | commit work;)
|
|---|
| 457 | ...
|
|---|
| 458 | опісля переходимо DLL в нашій процедурі
|
|---|
| 459 | зачищаємо остані рядки, ставимо замість SYSDBA- PUBLIC
|
|---|
| 460 | зберігаємо
|
|---|
| 461 | .
|
|---|
| 462 |
|
|---|
| 463 |
|
|---|