Por alguna razón no puedo insertar la imágen pero bueno...
http://lh4.ggpht.com/_IuT93QvTKI0/S3...endepedido.png
el anterior es el formulario... todo está en edits y variables locales... los elementos de la orden están en un TStringGrid y cuando solicito crear la orden armo la consulta.
se me olvidaba un pequeño detalle
... yo uso Postgres no firebird. aún así este es el codigo del procedimiento...
Código SQL
[-]
CREATE OR REPLACE FUNCTION pedidos.fn_req(
prm_cyp_id character varying,
prm_usr_id integer,
prm_art_det_id integer[],
prm_req_art_cant integer[],
prm_o_art character varying[],
prm_t_compra integer
) RETURNS integer AS
$BODY$
DECLARE
var_req_id INTEGER;
var_curtime time;
var_cant integer;
var_cont integer;
_estd_xfact varchar;
_estd_pndte varchar;
_estd_xent varchar;
_estd_sql varchar;
_compra_nrml int4;
_compra_aprv int4;
BEGIN
--valores por defecto...
var_curtime := current_time;
_estd_xfact := 'E9';
_estd_pndte := 'E1';
_estd_xent := 'E6';
_compra_nrml := 0;
_compra_aprv := 1;
--Estado inicial del estado
_estd_sql := _estd_xfact;
if prm_t_compra = _compra_aprv then
_estd_sql = _estd_pndte;
end if;
--Insercion de requisicion
INSERT INTO pedidos.requisiciones(req_time, cyp_id, usr_id, estd_id)
VALUES(var_curtime, prm_cyp_id, prm_usr_id, _estd_sql);
--obtener el ID de la insercion
SELECT INTO var_req_id req_id
FROM pedidos.requisiciones
WHERE
req_date = current_date
AND req_time = var_curtime
AND cyp_id = prm_cyp_id
AND estd_id = _estd_sql
AND usr_id = prm_usr_id;
-- cantidad de articulos en detalle
var_cant := ARRAY_DIM(1, prm_art_det_id);
-- Insercion del detalles
FOR i IN 1..var_cant LOOP
_estd_sql := _estd_xfact;
if prm_t_compra = _compra_aprv then
_estd_sql = _estd_pndte;
end if;
INSERT INTO pedidos.req_art(req_id, art_det_id, req_art_cant, estd_id, req_art_orgn)
VALUES (var_req_id, prm_art_det_id[i], prm_req_art_cant[i], _estd_sql, prm_o_art[i]);
END LOOP;
RETURN var_req_id;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;