Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET serveroutput ON;
- DECLARE
- v_chamado VARCHAR(25) := 'CHAMADO';
- v_count int := 0;
- CURSOR c1 IS
- SELECT DISTINCT wh_id, order_number FROM t_pick_detail
- WHERE order_number IN ('ALOCAÇÃO')
- AND wh_id = 'ARMAZEM';
- BEGIN
- FOR r1 IN c1 LOOP
- -- Verifica se a alocação é contra buffer
- SELECT COUNT(1)
- INTO v_count
- FROM t_order
- WHERE order_number = r1.order_number
- AND wh_id = r1.wh_id
- AND cust_po_number IS NULL;
- -- Se a alocação for contra buffer, executa a derrubada
- IF(v_count > 0) THEN
- -- Prepara a t_pick_detail para a derrubada
- UPDATE t_pick_detail
- SET stacking_sequence = planned_quantity, container_id = 'DISO'
- WHERE order_number = r1.order_number
- AND wh_id = r1.wh_id;
- -- Chama a procedure de derrubada
- -- begin br_usp_derruba_inbound('DISO', r1.wh_id, r1.order_number); end;
- -- Printa
- dbms_output.put_line('Alocação ' || r1.order_number || ' derrubada');
- -- Insere transação
- INSERT INTO t_tran_log_holding(tran_log_holding_id, tran_type, description, control_number, wh_id, start_tran_date)
- VALUES(NULL, '999', 'Alocação derrubada. Chamado ' || v_chamado, r1.order_number, r1.wh_id, TRUNC(SYSDATE));
- -- Zera count
- v_count := 0;
- -- Senão, avisa que não é contra buffer
- ELSE
- dbms_output.put_line('Alocação ' || r1.order_number || ' não é contra buffer');
- -- Zera count
- v_count := 0;
- END IF;
- END LOOP;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement