PageRenderTime 46ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/core/promogest/modules/SchedaLavorazione/data/app/stampalux_app.sql

http://promogest.googlecode.com/
SQL | 664 lines | 561 code | 61 blank | 42 comment | 33 complexity | a9686b4a8f924805eeb3bc0edd65239b MD5 | raw file
Possible License(s): GPL-2.0
  1. --
  2. -- Copyright (C) 2005 by Promotux Informatica - http://www.promotux.it/
  3. -- Author: Dr astico (Marco Pinna) <zoccolodignu@gmail.com>
  4. --
  5. -- This program is free software; you can redistribute it and/or
  6. -- modify it under the terms of the GNU General Public License
  7. -- as published by the Free Software Foundation; either version 2
  8. -- of the License, or (at your option) any later version.
  9. --
  10. -- This program is distributed in the hope that it will be useful,
  11. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. -- GNU General Public License for more details.
  14. --
  15. -- You should have received a copy of the GNU General Public License
  16. -- along with this program; if not, write to the Free Software
  17. -- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  18. /*
  19. *
  20. * Schede lavorazione - Stored procedure applicative (get-set-del)
  21. *
  22. */
  23. DROP TYPE promogest.scheda_ordinazione_type CASCADE;
  24. DROP TYPE promogest.scheda_ordinazione_sel_count_type CASCADE;
  25. DROP TYPE promogest.scheda_ordinazione_sel_type CASCADE;
  26. CREATE TYPE promogest.scheda_ordinazione_type AS
  27. (id int8,
  28. numero int8,
  29. note_text text,
  30. note_fornitore varchar,
  31. note_final varchar,
  32. note_spedizione varchar,
  33. mezzo_ordinazione varchar,
  34. mezzo_spedizione varchar,
  35. disp_materiale bool,
  36. id_colore_stampa int8,
  37. id_carattere_stampa int8,
  38. bomba_in_cliche bool,
  39. codice_spedizione varchar,
  40. operatore varchar,
  41. nomi_sposi varchar,
  42. provenienza varchar,
  43. nome_contatto varchar,
  44. prima_email varchar,
  45. seconda_email varchar,
  46. telefono varchar,
  47. cellulare varchar,
  48. skype varchar,
  49. referente varchar,
  50. presso varchar,
  51. via_piazza varchar,
  52. num_civ varchar,
  53. zip varchar,
  54. localita varchar,
  55. provincia varchar,
  56. stato varchar,
  57. data_matrimonio date,
  58. data_presa_in_carico date,
  59. data_ordine_al_fornitore date,
  60. data_consegna_bozza date,
  61. data_spedizione date,
  62. data_consegna date,
  63. data_ricevuta date,
  64. ricevuta_associata varchar,
  65. applicazione_sconti varchar,
  66. documento_saldato bool,
  67. fattura bool,
  68. totale_lordo numeric(16,4),
  69. userid_cliente varchar,
  70. passwd_cliente varchar,
  71. lui_e_lei varchar,
  72. id_cliente int8,
  73. id_magazzino int8,
  74. colore_stampa varchar,
  75. carattere_stampa varchar);
  76. CREATE TYPE promogest.scheda_ordinazione_sel_type AS
  77. (id int8,
  78. numero int8,
  79. note_text text,
  80. note_fornitore varchar,
  81. note_final varchar,
  82. note_spedizione varchar,
  83. mezzo_ordinazione varchar,
  84. mezzo_spedizione varchar,
  85. disp_materiale bool,
  86. id_colore_stampa int8,
  87. id_carattere_stampa int8,
  88. bomba_in_cliche bool,
  89. codice_spedizione varchar,
  90. operatore varchar,
  91. nomi_sposi varchar,
  92. provenienza varchar,
  93. nome_contatto varchar,
  94. prima_email varchar,
  95. seconda_email varchar,
  96. telefono varchar,
  97. cellulare varchar,
  98. skype varchar,
  99. referente varchar,
  100. presso varchar,
  101. via_piazza varchar,
  102. num_civ varchar,
  103. zip varchar,
  104. localita varchar,
  105. provincia varchar,
  106. stato varchar,
  107. data_matrimonio date,
  108. data_presa_in_carico date,
  109. data_ordine_al_fornitore date,
  110. data_consegna_bozza date,
  111. data_spedizione date,
  112. data_consegna date,
  113. data_ricevuta date,
  114. ricevuta_associata varchar,
  115. applicazione_sconti varchar,
  116. documento_saldato bool,
  117. fattura bool,
  118. totale_lordo numeric(16,4),
  119. userid_cliente varchar,
  120. passwd_cliente varchar,
  121. lui_e_lei
  122. id_cliente int8,
  123. id_magazzino int8,
  124. colore_stampa varchar,
  125. carattere_stampa varchar);
  126. CREATE TYPE promogest.scheda_ordinazione_sel_count_type AS (
  127. count bigint
  128. );
  129. DROP FUNCTION promogest.SchedaOrdinazioneSet ("varchar", int8, int8, int8, text, "varchar", "varchar", "varchar", "varchar", "varchar", bool, int8, int8, bool, "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", date, date, date, date, date, date, date, "varchar", "varchar", bool, bool, "numeric", "varchar", "varchar", "varchar", int8, int8, "varchar", "varchar") CASCADE;
  130. CREATE OR REPLACE FUNCTION promogest.schedaordinazioneset("varchar", int8, int8, int8, text, "varchar", "varchar", "varchar", "varchar", "varchar", bool, int8, int8, bool, "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", "varchar", date, date, date, date, date, date, date, "varchar", "varchar", bool, bool, "numeric", "varchar", "varchar", "varchar", int8, int8, "varchar", "varchar")
  131. RETURNS promogest.resultid AS
  132. $$
  133. DECLARE
  134. -- Parametri contesto
  135. _schema ALIAS FOR $1;
  136. _idutente ALIAS FOR $2;
  137. -- Parametri tabella
  138. _id ALIAS FOR $3;
  139. _numero ALIAS FOR $4;
  140. _note_text ALIAS FOR $5;
  141. _note_fornitore ALIAS FOR $6;
  142. _note_final ALIAS FOR $7;
  143. _note_spedizione ALIAS FOR $8;
  144. _mezzo_ordinazione ALIAS FOR $9;
  145. _mezzo_spedizione ALIAS FOR $10;
  146. _materiale_disponibile ALIAS FOR $11;
  147. _id_colore_stampa ALIAS FOR $12;
  148. _id_carattere_stampa ALIAS FOR $13;
  149. _bomba_in_cliche ALIAS FOR $14;
  150. _codice_spedizione ALIAS FOR $15;
  151. _operatore ALIAS FOR $16;
  152. _nomi_sposi ALIAS FOR $17;
  153. _provenienza ALIAS FOR $18;
  154. _nome_contatto ALIAS FOR $19;
  155. _prima_email ALIAS FOR $20;
  156. _seconda_email ALIAS FOR $21;
  157. _telefono ALIAS FOR $22;
  158. _cellulare ALIAS FOR $23;
  159. _skype ALIAS FOR $24;
  160. _referente ALIAS FOR $25;
  161. _presso ALIAS FOR $26;
  162. _via_piazza ALIAS FOR $27;
  163. _num_civ ALIAS FOR $28;
  164. _zip ALIAS FOR $29;
  165. _localita ALIAS FOR $30;
  166. _provincia ALIAS FOR $31;
  167. _stato ALIAS FOR $32;
  168. _data_matrimonio ALIAS FOR $33;
  169. _data_presa_in_carico ALIAS FOR $34;
  170. _data_ordine_al_fornitore ALIAS FOR $35;
  171. _data_consegna_bozza ALIAS FOR $36;
  172. _data_spedizione ALIAS FOR $37;
  173. _data_consegna ALIAS FOR $38;
  174. _data_ricevuta ALIAS FOR $39;
  175. _ricevuta_associata ALIAS FOR $40;
  176. _applicazione_sconti ALIAS FOR $41;
  177. _documento_saldato ALIAS FOR $42;
  178. _fattura ALIAS FOR $43;
  179. _totale_lordo ALIAS FOR $44;
  180. _userid_cliente ALIAS FOR $45;
  181. _passwd_cliente ALIAS FOR $46;
  182. _lui_e_lei ALIAS FOR $47;
  183. _id_cliente ALIAS FOR $48;
  184. _id_magazzino ALIAS FOR $49;
  185. _number integer;
  186. _registro varchar(100);
  187. schema_prec varchar(2000);
  188. sql_command varchar(2000);
  189. sql_statement varchar(2000);
  190. _ret promogest.resultid;
  191. _rec record;
  192. BEGIN
  193. -- Memorizza schema precedente
  194. schema_prec:= ARRAY_TO_STRING(CURRENT_SCHEMAS('t'),',');
  195. -- Imposta schema corrente
  196. sql_command:= 'SET SEARCH_PATH TO ' || _schema;
  197. EXECUTE sql_command;
  198. --Se siamo in inserimento ottengo numero e registro scheda
  199. IF _id IS NULL THEN
  200. SELECT numero, registro INTO _number, _registro FROM promogest.NumeroRegistroSchedaGet('Scheda Ordinazione', _data_presa_in_carico);
  201. ELSE
  202. _number:=_numero;
  203. END IF;
  204. SELECT * INTO _ret FROM promogest.SchedaOrdinazioneInsUpd(_schema, _idutente, _id, _number, _note_text, _note_fornitore, _note_final,_note_spedizione, _mezzo_ordinazione, _mezzo_spedizione, _materiale_disponibile,_id_colore_stampa, _id_carattere_stampa, _bomba_in_cliche, _codice_spedizione, _operatore,_nomi_sposi, _provenienza, _nome_contatto, _prima_email,_seconda_email, _telefono, _cellulare, _skype, _referente, _presso,_via_piazza, _num_civ, _zip, _localita, _provincia, _stato, _data_matrimonio,_data_presa_in_carico, _data_ordine_al_fornitore, _data_consegna_bozza, _data_spedizione, _data_consegna, _data_ricevuta, _documento_saldato, _fattura, _ricevuta_associata, _totale_lordo, _applicazione_sconti, _userid_cliente, _passwd_cliente, _lui_e_lei, _id_cliente, _id_magazzino );
  205. -- reimposta lo schema precedente
  206. sql_command:= 'SET SEARCH_PATH TO ' || schema_prec;
  207. RETURN _ret;
  208. END;
  209. $$ LANGUAGE plpgsql;
  210. DROP FUNCTION promogest.SchedaOrdinazioneGet(varchar,bigint,bigint);
  211. CREATE OR REPLACE FUNCTION promogest.schedaordinazioneget("varchar", int8, int8)
  212. RETURNS SETOF promogest.scheda_ordinazione_type AS
  213. $$
  214. DECLARE
  215. -- Parametri contesto
  216. _schema ALIAS FOR $1;
  217. _idutente ALIAS FOR $2;
  218. -- Parametri Tabella
  219. _id ALIAS FOR $3;
  220. schema_prec varchar(2000);
  221. sql_command varchar(2000);
  222. v_row record;
  223. BEGIN
  224. -- Memorizza schema precedente
  225. schema_prec:= ARRAY_TO_STRING(CURRENT_SCHEMAS('t'),',');
  226. -- Imposta schema corrente
  227. sql_command:= 'SET SEARCH_PATH TO ' || _schema;
  228. EXECUTE sql_command;
  229. FOR v_row IN SELECT * FROM v_scheda_ordinazione WHERE id = _id LOOP
  230. RETURN NEXT v_row;
  231. END LOOP;
  232. -- Imposta schema precedente
  233. sql_command:= 'SET SEARCH_PATH TO ' || schema_prec;
  234. EXECUTE sql_command;
  235. RETURN;
  236. END;
  237. $$ LANGUAGE plpgsql;
  238. DROP FUNCTION promogest.SchedaOrdinazioneDel (varchar, bigint, bigint);
  239. CREATE OR REPLACE FUNCTION promogest.schedaordinazionedel("varchar", int8, int8)
  240. RETURNS SETOF promogest.resultid AS
  241. $$
  242. DECLARE
  243. -- Parametri contesto
  244. _schema ALIAS FOR $1;
  245. _idutente ALIAS FOR $2;
  246. -- Parametri tabella
  247. _id ALIAS FOR $3;
  248. schema_prec varchar(2000);
  249. sql_command varchar(2000);
  250. _ret promogest.resultid;
  251. _rec record;
  252. BEGIN
  253. -- Memorizza schema precedente
  254. schema_prec:= ARRAY_TO_STRING(CURRENT_SCHEMAS('t'),',');
  255. -- Imposta schema corrente
  256. sql_command:= 'SET SEARCH_PATH TO ' || _schema;
  257. EXECUTE sql_command;
  258. DELETE FROM schede_ordinazioni WHERE id = _id;
  259. DELETE FROM datari WHERE id_scheda = _id;
  260. DELETE FROM recapiti_spedizioni WHERE id_scheda = _id;
  261. DELETE FROM note_schede WHERE id_scheda = _id;
  262. DELETE FROM contatti_schede WHERE id_scheda = _id;
  263. -- Imposta schema precedente
  264. sql_command:= 'SET SEARCH_PATH TO ' || schema_prec;
  265. EXECUTE sql_command;
  266. RETURN;
  267. END;
  268. $$ LANGUAGE plpgsql;
  269. DROP FUNCTION promogest.SchedaOrdinazioneSel("varchar", int8, "varchar", int8, int8, int8, int8, date, date, date, date, date, date, date, date, "varchar", "varchar", "varchar", "varchar", "varchar", bool, int8, int8, int8);
  270. CREATE OR REPLACE FUNCTION promogest.schedaordinazionesel("varchar", int8, "varchar", int8, int8, int8, int8, date, date, date, date, date, date, date, date, "varchar", "varchar", "varchar", "varchar", "varchar", bool, int8, int8, int8)
  271. RETURNS SETOF promogest.scheda_ordinazione_type AS
  272. $$
  273. DECLARE
  274. -- Parametri contesto
  275. _schema ALIAS FOR $1;
  276. _idutente ALIAS FOR $2;
  277. -- Parametri procedura
  278. _orderby ALIAS FOR $3;
  279. _da_numero ALIAS FOR $4;
  280. _a_numero ALIAS FOR $5;
  281. _colore_stampa ALIAS FOR $6;
  282. _carattere_stampa ALIAS FOR $7;
  283. _da_data_matrimonio ALIAS FOR $8;
  284. _a_data_matrimonio ALIAS FOR $9;
  285. _da_data_spedizione ALIAS FOR $10;
  286. _a_data_spedizione ALIAS FOR $11;
  287. _da_data_consegna ALIAS FOR $12;
  288. _a_data_consegna ALIAS FOR $13;
  289. _da_data_carico ALIAS FOR $14;
  290. _a_data_carico ALIAS FOR $15;
  291. _operatore ALIAS FOR $16;
  292. _referente ALIAS FOR $17;
  293. _nomi_sposi ALIAS FOR $18;
  294. _codice_spedizione ALIAS FOR $19;
  295. _ricevuta_associata ALIAS FOR $20;
  296. _documento_saldato ALIAS FOR $21;
  297. _id_cliente ALIAS FOR $22;
  298. _offset ALIAS FOR $23;
  299. _count ALIAS FOR $24;
  300. schema_prec varchar(2000);
  301. sql_statement varchar(2000);
  302. sql_cond varchar(2000);
  303. limitstring varchar(500);
  304. _add varchar(500);
  305. OrderBy varchar(200);
  306. v_row record;
  307. _tablename varchar;
  308. condition varchar(10);
  309. BEGIN
  310. -- Memorizza schema precedente
  311. schema_prec:= ARRAY_TO_STRING(CURRENT_SCHEMAS('t'),',');
  312. -- Imposta schema corrente
  313. sql_statement:= 'SET SEARCH_PATH TO ' || _schema;
  314. EXECUTE sql_statement;
  315. sql_statement:= 'SELECT SO.* FROM v_scheda_ordinazione SO ';
  316. sql_cond:='';
  317. IF _orderby IS NULL THEN
  318. OrderBy = ' SO.numero ';
  319. ELSE
  320. OrderBy = _orderby;
  321. END IF;
  322. IF _da_numero IS NOT NULL THEN
  323. _add:= ' ( SO.numero >= ' || _da_numero || ')';
  324. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  325. END IF;
  326. IF _a_numero IS NOT NULL THEN
  327. _add:= ' ( SO.numero <= ' || _a_numero || ')';
  328. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  329. END IF;
  330. IF _da_data_matrimonio IS NOT NULL THEN
  331. _add:= ' ( SO.data_matrimonio >= ' || QUOTE_LITERAL(_da_data_matrimonio) || ')';
  332. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  333. END IF;
  334. IF _a_data_matrimonio IS NOT NULL THEN
  335. _add:= ' ( SO.data_matrimonio <= ' || QUOTE_LITERAL(_a_data_matrimonio) || ')';
  336. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  337. END IF;
  338. IF _da_data_spedizione IS NOT NULL THEN
  339. _add:= ' ( SO.data_spedizione >= ' || QUOTE_LITERAL(_da_data_spedizione) || ')';
  340. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  341. END IF;
  342. IF _a_data_spedizione IS NOT NULL THEN
  343. _add:= ' ( SO.data_spedizione <= ' || QUOTE_LITERAL(_a_data_spedizione) || ')';
  344. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  345. END IF;
  346. IF _da_data_consegna IS NOT NULL THEN
  347. _add:= ' ( SO.data_consegna >= ' || QUOTE_LITERAL(_da_data_consegna) || ')';
  348. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  349. END IF;
  350. IF _a_data_consegna IS NOT NULL THEN
  351. _add:= ' ( SO.data_consegna <= ' || QUOTE_LITERAL(_a_data_consegna) || ')';
  352. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  353. END IF;
  354. IF _da_data_carico IS NOT NULL THEN
  355. _add:= ' ( SO.data_presa_in_carico >= ' || QUOTE_LITERAL(_da_data_carico) || ')';
  356. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  357. END IF;
  358. IF _a_data_carico IS NOT NULL THEN
  359. _add:= ' ( SO.data_presa_in_carico <= ' || QUOTE_LITERAL(_a_data_carico) || ')';
  360. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  361. END IF;
  362. IF _colore_stampa IS NOT NULL THEN
  363. _add:= ' SO.id_colore_stampa =' || _colore_stampa ;
  364. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  365. END IF;
  366. IF _carattere_stampa IS NOT NULL THEN
  367. _add:= ' SO.id_carattere_stampa =' || _carattere_stampa ;
  368. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  369. END IF;
  370. IF _operatore IS NOT NULL THEN
  371. _add:= E' SO.operatore ILIKE \'%' || _operatore || '%\' ';
  372. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  373. END IF;
  374. IF _nomi_sposi IS NOT NULL THEN
  375. _add:= E' SO.nomi_sposi ILIKE \'%' || _nomi_sposi || '%\'' ';
  376. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  377. END IF;
  378. IF _referente IS NOT NULL THEN
  379. _add:= E' SO.referente ILIKE \'%' || _referente || '%\' ';
  380. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  381. END IF;
  382. IF _codice_spedizione IS NOT NULL THEN
  383. _add:= E' SO.codice_spedizione ILIKE \'%' || _codice_spedizione || '%\' ';
  384. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  385. END IF;
  386. IF _ricevuta_associata IS NOT NULL THEN
  387. _add:= E' SO.ricevuta_associata ILIKE \'%' || _ricevuta_associata || '%\' ';
  388. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  389. END IF;
  390. IF _documento_saldato = false THEN
  391. condition:= 'f';
  392. _add:= ' ( SO.documento_saldato = ' || QUOTE_LITERAL(condition) || ') ';
  393. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  394. END IF;
  395. IF _documento_saldato = true THEN
  396. condition:= 't';
  397. _add:= ' ( SO.documento_saldato = ' || QUOTE_LITERAL(condition) || ') ';
  398. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  399. END IF;
  400. IF _id_cliente IS NOT NULL THEN
  401. _add:= 'SO.id_cliente = ' || _id_cliente ||;
  402. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  403. END IF;
  404. IF _offset IS NULL THEN
  405. limitstring:= '';
  406. ELSE
  407. limitstring:= ' LIMIT ' || _count || ' OFFSET ' || _offset;
  408. END IF;
  409. IF sql_cond != '' THEN
  410. sql_statement:= sql_statement || ' WHERE ' || sql_cond || ' ORDER BY ' || OrderBy || ' DESC ' || limitstring;
  411. ELSE
  412. sql_statement:= sql_statement || ' ORDER BY ' || OrderBy || ' DESC ' || limitstring;
  413. END IF;
  414. FOR v_row IN EXECUTE sql_statement LOOP
  415. RETURN NEXT v_row;
  416. END LOOP;
  417. -- Imposta schema precedente
  418. sql_statement:= 'SET SEARCH_PATH TO ' || schema_prec;
  419. EXECUTE sql_statement;
  420. RETURN;
  421. END;
  422. $$ LANGUAGE plpgsql;
  423. DROP FUNCTION promogest.schedaordinazioneselcount("varchar", int8, int8, int8, int8, int8, date, date, date, date, date, date, "varchar", "varchar", "varchar", "varchar", "varchar", bool, int8);
  424. CREATE OR REPLACE FUNCTION promogest.schedaordinazioneselcount("varchar", int8, int8, int8, int8, int8, date, date, date, date, date, date, date, date, "varchar", "varchar", "varchar", "varchar", "varchar", bool, int8)
  425. RETURNS SETOF promogest.scheda_ordinazione_sel_count_type AS
  426. $$
  427. DECLARE
  428. -- Parametri contesto
  429. _schema ALIAS FOR $1;
  430. _idutente ALIAS FOR $2;
  431. -- Parametri procedura
  432. _da_numero ALIAS FOR $3;
  433. _a_numero ALIAS FOR $4;
  434. _colore_stampa ALIAS FOR $5;
  435. _carattere_stampa ALIAS FOR $6;
  436. _da_data_matrimonio ALIAS FOR $7;
  437. _a_data_matrimonio ALIAS FOR $8;
  438. _da_data_spedizione ALIAS FOR $9;
  439. _a_data_spedizione ALIAS FOR $10;
  440. _da_data_consegna ALIAS FOR $11;
  441. _a_data_consegna ALIAS FOR $12;
  442. _da_data_carico ALIAS FOR $13;
  443. _a_data_carico ALIAS FOR $14;
  444. _operatore ALIAS FOR $15;
  445. _referente ALIAS FOR $16;
  446. _nomi_sposi ALIAS FOR $17;
  447. _codice_spedizione ALIAS FOR $18;
  448. _ricevuta_associata ALIAS FOR $19;
  449. _documento_saldato ALIAS FOR $20;
  450. _id_cliente ALIAS FOR $21;
  451. schema_prec varchar(2000);
  452. sql_statement varchar(2000);
  453. sql_cond varchar(2000);
  454. _add varchar(500);
  455. v_row record;
  456. _tablename varchar;
  457. condition varchar(10);
  458. BEGIN
  459. -- Memorizza schema precedente
  460. schema_prec:= ARRAY_TO_STRING(CURRENT_SCHEMAS('t'),',');
  461. -- Imposta schema corrente
  462. sql_statement:= 'SET SEARCH_PATH TO ' || _schema;
  463. EXECUTE sql_statement;
  464. sql_statement:= 'SELECT COUNT(SO.id) FROM v_scheda_ordinazione SO ';
  465. sql_cond:='';
  466. IF _da_numero IS NOT NULL THEN
  467. _add:= ' ( SO.numero >= ' || _da_numero || ')';
  468. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  469. END IF;
  470. IF _a_numero IS NOT NULL THEN
  471. _add:= ' ( SO.numero <= ' || _a_numero || ')';
  472. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  473. END IF;
  474. IF _da_data_matrimonio IS NOT NULL THEN
  475. _add:= ' ( SO.data_matrimonio >= ' || QUOTE_LITERAL(_da_data_matrimonio) || ')';
  476. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  477. END IF;
  478. IF _a_data_matrimonio IS NOT NULL THEN
  479. _add:= ' ( SO.data_matrimonio <= ' || QUOTE_LITERAL(_a_data_matrimonio) || ')';
  480. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  481. END IF;
  482. IF _da_data_spedizione IS NOT NULL THEN
  483. _add:= ' ( SO.data_spedizione >= ' || QUOTE_LITERAL(_da_data_spedizione) || ')';
  484. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  485. END IF;
  486. IF _a_data_spedizione IS NOT NULL THEN
  487. _add:= ' ( SO.data_spedizione <= ' || QUOTE_LITERAL(_a_data_spedizione) || ')';
  488. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  489. END IF;
  490. IF _da_data_consegna IS NOT NULL THEN
  491. _add:= ' ( SO.data_consegna >= ' || QUOTE_LITERAL(_da_data_consegna) || ')';
  492. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  493. END IF;
  494. IF _a_data_consegna IS NOT NULL THEN
  495. _add:= ' ( SO.data_consegna <= ' || QUOTE_LITERAL(_a_data_consegna) || ')';
  496. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  497. END IF;
  498. IF _da_data_carico IS NOT NULL THEN
  499. _add:= ' ( SO.data_presa_in_carico >= ' || QUOTE_LITERAL(_da_data_carico) || ')';
  500. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  501. END IF;
  502. IF _a_data_carico IS NOT NULL THEN
  503. _add:= ' ( SO.data_presa_in_carico <= ' || QUOTE_LITERAL(_a_data_carico) || ')';
  504. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  505. END IF;
  506. IF _colore_stampa IS NOT NULL THEN
  507. _add:= ' SO.id_colore_stampa =' || _id_colore_stampa ;
  508. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  509. END IF;
  510. IF _carattere_stampa IS NOT NULL THEN
  511. _add:= ' SO.id_carattere_stampa =' || _id_carattere_stampa ;
  512. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  513. END IF;
  514. IF _operatore IS NOT NULL THEN
  515. _add:= E' SO.operatore ILIKE \'%' || _operatore || '%\' ';
  516. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  517. END IF;
  518. IF _nomi_sposi IS NOT NULL THEN
  519. _add:= E' SO.nomi_sposi ILIKE \'%' || _nomi_sposi || '%\' ';
  520. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  521. END IF;
  522. IF _referente IS NOT NULL THEN
  523. _add:= E' SO.referente ILIKE \'%' || _referente || '%\' ';
  524. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  525. END IF;
  526. IF _codice_spedizione IS NOT NULL THEN
  527. _add:= E' SO.codice_spedizione ILIKE \'%' || _codice_spedizione || '%\' ';
  528. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  529. END IF;
  530. IF _ricevuta_associata IS NOT NULL THEN
  531. _add:= E' SO.ricevuta_associata ILIKE \'%' || _ricevuta_associata || '%\' ';
  532. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  533. END IF;
  534. IF _documento_saldato = false THEN
  535. condition:= 'f';
  536. _add:= ' ( SO.documento_saldato = ' || QUOTE_LITERAL(condition) || ')';
  537. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  538. END IF;
  539. IF _documento_saldato = true THEN
  540. condition:= 't';
  541. _add:= ' ( SO.documento_saldato = ' || QUOTE_LITERAL(condition) || ')';
  542. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  543. END IF;
  544. IF _id_cliente IS NOT NULL THEN
  545. _add:= 'SO.id_cliente = ' || _id_cliente ||;
  546. sql_cond:= promogest.sqlAddCondition(sql_cond,_add);
  547. END IF;
  548. IF sql_cond != '' THEN
  549. sql_statement:= sql_statement || ' WHERE ' || sql_cond;
  550. END IF;
  551. FOR v_row IN EXECUTE sql_statement LOOP
  552. RETURN NEXT v_row;
  553. END LOOP;
  554. -- Imposta schema precedente
  555. sql_statement:= 'SET SEARCH_PATH TO ' || schema_prec;
  556. EXECUTE sql_statement;
  557. RETURN;
  558. END;
  559. $$ LANGUAGE plpgsql;