2 -- create dummy itemlocs
5 -- create dummy itemlocs
7 CREATE OR REPLACE FUNCTION invadj_post(int)
12 i_invadj_id ALIAS FOR $1;
17 v_invdetail_id INTEGER;
21 v_result_bool BOOLEAN;
32 invadj_id = i_invadj_id;
35 RAISE EXCEPTION 'could not find invadj record';
38 IF r_invadj.invadj_posted THEN
39 RAISE EXCEPTION 'invadj already posted';
43 IF r_invadj.invadj_voids_id > 0 THEN
52 invadj_id = r_invadj.invadj_voids_id;
57 RAISE EXCEPTION 'voids id is invalid';
60 RAISE EXCEPTION 'voids id points to an already voided record';
67 r_invadj.invadj_itemsite_id,
68 r_invadj.invadj_qty_by,
69 'INVADJ-' || r_invadj.invadj_id,
70 r_invadj.invadj_comments,
71 r_invadj.invadj_transdate
76 RAISE EXCEPTION 'invAdjustment post failed with %', v_series;
80 itemlocdist_id, itemlocdist_reqlotserial,
81 itemlocdist_distlotserial, itemlocdist_qty,
83 itemsite_loccntrl, itemsite_controlmethod,
84 itemsite_perishable, itemsite_warrpurc,
86 COALESCE(itemsite_lsseq_id,-1) AS itemsite_lsseq_id,
87 COALESCE(itemlocdist_source_id,-1) AS itemlocdist_source_id
94 (itemlocdist_itemsite_id=itemsite_id) AND (itemlocdist_series=v_series )
96 ORDER BY itemlocdist_id;
100 RAISE EXCEPTION 'invAdjustment failed to create itemlocdist';
105 INSERT INTO itemlocdist (
106 itemlocdist_itemlocdist_id, itemlocdist_source_type,
107 itemlocdist_source_id, itemlocdist_qty,
108 itemlocdist_ls_id, itemlocdist_expiration
112 r_invadj.invadj_location_id, r_invadj.invadj_qty_by,
113 itemlocdist_ls_id, endOfTime()
114 FROM itemlocdist WHERE (itemlocdist_id=r_dist.itemlocdist_id);
117 SELECT distributeToLocations(r_dist.itemlocdist_id) INTO v_result;
119 IF NOT FOUND OR v_result < 0 THEN
120 RAISE EXCEPTION 'distributeToLocations failed ';
124 SELECT postItemlocseries(v_series) INTO v_result_bool ;
126 IF NOT v_result_bool THEN
127 RAISE EXCEPTION 'postItemlocseries failed ';
130 -- finally - if the record was a void - make refernce in the voided data..
131 IF r_invadj.invadj_voids_id > 0 THEN
134 invadj_voided_by_id = r_invadj.invadj_id
136 invadj_id = r_invadj.invadj_voids_id ;
148 invhist_ordnumber = 'INVADJ-' || r_invadj.invadj_id
153 invadj_posted = true,
154 invadj_invdetail_id = v_invdetail_id
157 invadj_id = r_invadj.invadj_id;
162 -- we need to update the invhist id..
164 IF r_invadj.invadj_voids_id > 0 OR r_invadj.invadj_voided_by_id > 0 THEN
165 -- try running the void flag code.
166 PERFORM invfifo_invadj_void_flag(v_invdetail_id);
174 LANGUAGE plpgsql VOLATILE
176 ALTER FUNCTION invadj_post(int)
182 --DELETE FROM invadj;
183 --SELECT invadj_sync_invdetail(invdetail_id) FROM invdetailview where invhist_transtype = 'AD' ORDER BY invhist_transdate ASC;
186 --- FIX the fact i forgot to update invdetail id..
189 -- SET invadj_invdetail_id = (SELECT invdetail_id FROM invdetailview WHERE invhist_ordnumber = 'INVADJ-' || invadj_id LIMIT 1)
190 -- WHERE invadj_posted and invadj_invdetail_id IS NULL;