Ver Mensaje Individual
  #9  
Antiguo 19-02-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
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;
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita