Ajuda, por favor. Estou precisando quebrar os itens da nf. e criar outra... me deem alguma luz... obrigadao.
atualmente: declare erro_e exception; v_num_nf parametro_filial.num_nf%type; v_serie_nf parametro_filial.serie_nf%type; v_impressao number(1); --1 impressao 2-reemissao v_existe number(20); v_qtde number(20); v_qtde_itens_realizados number:=0; begin /*Novo 22/06/2004, colocado para garantir que o numero da nota fique correto*/ --Colocado pois o funcionario estava alterando o CNPJ e mandando imprimir a nota :system.message_level := 5; post; commit; :system.message_level := 0; if ( :documento_fiscal.id_filial_saida is null ) then msg( 'Consulte a venda antes de efetuar esta ação.' ); raise erro_e; end if; if ( ( :documento_fiscal.id_cliente is null ) or ( :documento_fiscal.nome is null ) ) then msg( 'É necessário ser informado um cliente para esta ação.' ); raise erro_e; end if; if (( :end_doc_fiscal.tipo_endereco is null ) or ( :end_doc_fiscal.logradouro is null ) or ( :end_doc_fiscal.cep is null ) or ( :end_doc_fiscal.localidade is null ) or ( :end_doc_fiscal.uf is null )) then msg ('O Endereço da Nota Fiscal, não está preenchido corretamente. '|| 'os campos: Tipo, Cep, Endereço, Cidade e Estado não podem estar vazios' ); raise erro_e; end if; ----------------------------------------- msg(:item_doc_fiscal.contador); if :item_doc_fiscal.contador > 28 then msg('A quantidade de Itens do documento fiscal tem que ser menor que 28 Itens'); raise form_trigger_failure; end if; ------------------------------------------------- --go_block('item_doc_fiscal'); --first_record; /*Fim do Novo 22/06/2004, colocado para garantir que o numero da nota fique correto*/ proc_num_nf(:documento_fiscal.id_filial_saida,v_num_nf,v_serie_nf); if ( v_num_nf is null or v_serie_nf is null ) then forms_ddl('rollback'); :parametro.id_filial_logada := :global.id_filial; msg('Na tabela de Parâmetro Filial deve ser informada a Numeração da Nota e Série.'); raise erro_e; end if; :documento_fiscal.nunofi_cf := :documento_fiscal.num_doc_fiscal; :documento_fiscal.serie_cf := :documento_fiscal.serie_doc_fiscal; -- :documento_fiscal.data_emissao_nota := :documento_fiscal.data_emissao ; :documento_fiscal.num_doc_fiscal := v_num_nf; :documento_fiscal.serie_doc_fiscal := v_serie_nf; :documento_fiscal.tipo_documento := 1; --tipo nota :documento_fiscal.data_emissao_nota := trunc(sysdate); :documento_fiscal.copia_nota := 1; --tem copia de nota update ocorrencia set num_doc_fiscal = :documento_fiscal.num_doc_fiscal ,serie_doc_fiscal = :documento_fiscal.serie_doc_fiscal where id_documento_fiscal = :documento_fiscal.id_documento_fiscal; /* Novo na Tanger */ v_existe := 0; select count(1) into v_existe from end_doc_fiscal e where e.id_documento_fiscal = :end_doc_fiscal.id_documento_fiscal; if v_existe = 0 then insert into end_doc_fiscal ( TIPO_ENDERECO ,TIPO_LOGRADOURO ,LOGRADOURO ,COMPLEMENTO ,NUMERO ,BAIRRO ,CEP ,LOCALIDADE ,UF ,DDD ,TELEFONE ,INSCR_EST ,ID_DOCUMENTO_FISCAL ,PONTO_REFERENCIA1 ,PONTO_REFERENCIA2) values (:end_doc_fiscal.tipo_endereco ,:end_doc_fiscal.tipo_logradouro ,:end_doc_fiscal.logradouro ,:end_doc_fiscal.complemento ,:end_doc_fiscal.numero ,:end_doc_fiscal.bairro ,:end_doc_fiscal.cep ,:end_doc_fiscal.localidade ,:end_doc_fiscal.uf ,:end_doc_fiscal.ddd ,:end_doc_fiscal.telefone ,:end_doc_fiscal.inscr_est ,:end_doc_fiscal.id_documento_fiscal ,:end_doc_fiscal.ponto_referencia1 ,:end_doc_fiscal.ponto_referencia2 ); else update end_doc_fiscal edf set edf.TIPO_ENDERECO = :end_doc_fiscal.tipo_endereco ,edf.TIPO_LOGRADOURO = :end_doc_fiscal.tipo_logradouro ,edf.LOGRADOURO = :end_doc_fiscal.logradouro ,edf.COMPLEMENTO = :end_doc_fiscal.complemento ,edf.NUMERO = :end_doc_fiscal.numero ,edf.BAIRRO = :end_doc_fiscal.bairro ,edf.CEP = :end_doc_fiscal.cep ,edf.LOCALIDADE = :end_doc_fiscal.localidade ,edf.UF = :end_doc_fiscal.uf ,edf.DDD = :end_doc_fiscal.ddd ,edf.TELEFONE = :end_doc_fiscal.telefone ,edf.INSCR_EST = :end_doc_fiscal.inscr_est ,edf.PONTO_REFERENCIA1 = :end_doc_fiscal.ponto_referencia1 ,edf.PONTO_REFERENCIA2 = :end_doc_fiscal.ponto_referencia2 where edf.id_documento_fiscal = :end_doc_fiscal.id_documento_fiscal; end if; if ( not ( ( :adicionais.linha1 is null ) and ( :adicionais.linha2 is null ) and ( :adicionais.linha3 is null ) and ( :adicionais.linha4 is null ) and ( :adicionais.linha5 is null ) and ( :adicionais.linha6 is null ) and ( :adicionais.linha7 is null ) ) ) then v_qtde := 0; select count(1) into v_qtde from dado_adicional_nota where id_documento_fiscal = :documento_fiscal.id_documento_fiscal; if ( v_qtde = 0 ) then --linha 1 insert into dado_adicional_nota( id_documento_fiscal, nro_linha, texto ) values ( :documento_fiscal.id_documento_fiscal, 1, nvl (:adicionais.linha1,' ') ); --linha 2 insert into dado_adicional_nota( id_documento_fiscal, nro_linha, texto ) values ( :documento_fiscal.id_documento_fiscal, 2, nvl (:adicionais.linha2,' ') ); --linha 3 insert into dado_adicional_nota( id_documento_fiscal, nro_linha, texto ) values ( :documento_fiscal.id_documento_fiscal, 3, nvl (:adicionais.linha3,' ') ); --linha 4 insert into dado_adicional_nota( id_documento_fiscal, nro_linha, texto ) values ( :documento_fiscal.id_documento_fiscal, 4, nvl (:adicionais.linha4,' ') ); --linha 5 insert into dado_adicional_nota( id_documento_fiscal, nro_linha, texto ) values ( :documento_fiscal.id_documento_fiscal, 5, nvl (:adicionais.linha5,' ') ); --linha 6 insert into dado_adicional_nota( id_documento_fiscal, nro_linha, texto ) values ( :documento_fiscal.id_documento_fiscal, 6, nvl (:adicionais.linha6,' ') ); --linha 7 insert into dado_adicional_nota( id_documento_fiscal, nro_linha, texto ) values ( :documento_fiscal.id_documento_fiscal, 7, nvl (:adicionais.linha7,' ') ); else --linha 1 update dado_adicional_nota n set n.texto = nvl (:adicionais.linha1,' ') where id_documento_fiscal = :documento_fiscal.id_documento_fiscal and nro_linha = 1; --linha 2 update dado_adicional_nota n set n.texto = nvl (:adicionais.linha2,' ') where id_documento_fiscal = :documento_fiscal.id_documento_fiscal and nro_linha = 2; --linha 3 update dado_adicional_nota n set n.texto = nvl (:adicionais.linha3,' ') where id_documento_fiscal = :documento_fiscal.id_documento_fiscal and nro_linha = 3; --linha 4 update dado_adicional_nota n set n.texto = nvl (:adicionais.linha4,' ') where id_documento_fiscal = :documento_fiscal.id_documento_fiscal and nro_linha = 4; --linha 5 update dado_adicional_nota n set n.texto = nvl (:adicionais.linha5,' ') where id_documento_fiscal = :documento_fiscal.id_documento_fiscal and nro_linha = 5; --linha 6 update dado_adicional_nota n set n.texto = nvl (:adicionais.linha6,' ') where id_documento_fiscal = :documento_fiscal.id_documento_fiscal and nro_linha = 6; --linha 7 update dado_adicional_nota n set n.texto = nvl (:adicionais.linha7,' ') where id_documento_fiscal = :documento_fiscal.id_documento_fiscal and nro_linha = 7; end if; end if; /*Novo em 22/03/2004 a pedido do Nobre*/ proc_fila_impressao(:documento_fiscal.id_documento_fiscal); --gera fila_troca_nota /* if :item_doc_fiscal.contador > 28 then insert into fila_troca_nota (data_lancto ,id_filial_saida ,num_doc_fiscal ,serie_doc_fiscal ,nunofi_cf ,serie_cf ,data_emissao_nota ,id_documento_fiscal) values (sysdate ,:documento_fiscal.id_filial_saida ,v_num_nf -- novos ,v_serie_nf - -novos ,:documento_fiscal.nunofi_cf --sao antigos ,:documento_fiscal.serie_cf --sao antigos ,trunc (sysdate) --data_emissao ,:documento_fiscal.id_documento_fiscal);--tirado em 02/09/2004 end if; */ :system.message_level := 5; commit; forms_ddl('commit'); :system.message_level := 0; msg('Nota Fiscal Emitida'); go_block('relatorio'); clear_block; go_block('adicionais'); clear_block; go_block( 'end_doc_fiscal' ); clear_block; go_block('documento_fiscal'); clear_block; go_block('parametro'); clear_block; :parametro.id_filial_logada := :global.id_filial; exception when erro_e then null; when others then rollback; msg( 'Erro: '||sqlerrm ); end;