c_pedido cursor is select a.numero_pedido, a.numero_cliente, a.nome_cliente, a.total_pedido, a.n umero_condicao from pedido a where a.numero_pedido = p_titulo; begin open c_pedido; fetch c_pedido into v_pedido, v_cliente, v_nomecliente, v_totalpedido, v_cond icao; close c_pedido;
select count(*) into v_quantParcela from dias_condicao where numero_condicao = v_condicao; if v_quantParcela = 0 then Raise exception 'solerror:No existe dias cadastrado para esta condio de paga mento,deve ser cadastrado mesmo com 0 dias'; end if;
--=================================================================== for itens in select * from itens_pedido where numero_pedido = v_pedido
loop update veiculo set situacao_veiculo = 'V' where numero_veiculo = itens.numero_veiculo; end loop;
for v_parc in select dia from dias_condicao where numero_condicao = v_condicao
loop if v_contItem >26 then --Controla as letras.(n-1A,n-1B...n-1Z - n-2A,n-2B. ..2Z...) v_contItem :=0; --Isto no caso de mais de 26 parcelas. v_parcela := v_parcela + 1; end if; v_contItem := v_contItem +1; v_codigoItem:= v_pedido||'-'||v_contItem||'/'||v_quantParcela; v_vencimento:=(date(current_date) + v_parc.dia); --Verifica se a data na o cai no feriado, sabadao ou domingo. v_idItem :=NEXTVAL('parcela_receber_numero_titulo_seq'); Insert into parcela_receber(numero_titulo, codigo_titulo, data_cadastro, d ata_vencimento, valor_parcela, numero_pedido) values(v_idItem, v_codigoItem, current_date, v_vencimento, v_valorParcela,v_pedido ); v_diferenca := v_diferenca + v_valorPArcela; end loop; /* if v_diferenca < v_valor_titulo then v_diferenca := v_valor_titulo - v_diferenca; update reciterc set nvaloriterc = nvaloriterc+v_diferenca where nnumerotitrc = p_titulo and nnumeroiterc = v_idItem; end if;*/ return; end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION prc_recgera_titulos(bigint) OWNER TO sollutions;