Sintegra - Cupom

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pessoal preciso de uma procedure que se chamará exporta_cupom_fiscal(pi_mês_geracao in date) que gere um arquivo chamado SINTmmaa.ee onde mm=mês aa=ano ee=hotel. Seguindo o segundo formato abaixo
gerando cabecalho e detalhe, que serao somados por situacao tributaria.


Cupom(sintegra – tipo 60M) (Cabeçalho)

Selecionar tudo

Campo             descricao       Tipo       Tamanho       Default
tipo                              char       2             60
mestre                            char       1             Espaço
Dt emissao                        inteiro    8             Aaaammdd
Nr maquina                        inteiro    3       
Nr serie maquina                  char       15       
Modelo doc                        char       2       
Nr inicial do contador            inteiro    6       
Nr final contador                 Inteiro    6       
Livre                             Char       45       
Fim                               Char       2       
Cupom(sintegra – tipo 60A) (detalhe)

Selecionar tudo

Campo       descricao       Tipo       Tamanho       Default
Tipo                        char       2             60
Mestre                      char       1             Espaço
Dt emissão                  inteiro    8             Aaaammdd
Nr maquina                  inteiro    3       
Situação tributaria         char       4       
Vlr acumulado               inteiro    12       
Filler                      char       96            Espaços
Fim                         Char       2
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Qual a dificuldade?

UTL_FILE_DIR parametro de banco,

e o pacote de banco UTL_FILE,

Vai postando as dificuldades, e os progressos,

Selecionar tudo

create or replace procedure exporta_cupom_fiscal(pi_mês_geracao in date) is
  nomeArquivo       varchar2(200);
  uArquivo             Utl_File.File_Type;
begin
  
  nomeArquivo := 'SINT'||to_char(pi_mês_geracao,'MMRRRR')||'.ee';

  --Abre o arquivo em modo leitura (r).
  uArquivo := Utl_File.FOpen('DIR', nomeArquivo, 'w');

  utl_file.put_line(uArquivo, 'Campo   descricao   Tipo   Tamanho   Default';

  utl_file.FClose(uArquivo);


pra comecar acho que já ajuda...
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

A minha dúvida está em como montar o cabeçalho e o detalhe no arquivo que irá ser gerado com base nas informações dos layouts

Cabeçalho

Arquivo: Cupom (sintegra – tipo 60M)(Mestre)
  • Campo Descricao Tipo Tamanho Default
    tipo char 2 60
    mestre char 1 Espaço
    Dt emissao inteiro 8 Aaaammdd
    Nr maquina inteiro 3
    Nr serie maquina char 15
    Modelo doc char 2
    Nr inicial do contador inteiro 6
    Nr final contador Inteiro 6
    Livre Char 45
    Fim Char 2
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Continuo sem entender direito, pelo que entendi, vai ter um put_line e um loop para os detalhes, dentro do loop terá um put_line colocando cada linha de detalhe,

put_line('cabecalho');

for i in (select campo1, campo2 from tabela) loop
put_line(arquivo, i.campo1||i.campo2);
end loop;

ou to viajando?
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

O meu objetivo é criar dentro do mesmo arquivo duas seções - onde o cabeçalho seriam esses campos pré-fixados(strings) e o detalhe seriam com campos com descrição similar (também strings) e posteriormente substituiria por variáveis de outras tabelas.

  • Campo Descricao Tipo Tamanho Default
    tipo char 2 60
    mestre char 1 Espaço
    Dt emissao inteiro 8 Aaaammdd
    Nr maquina inteiro 3
    Nr serie maquina char 15
    Modelo doc char 2
    Nr inicial do contador inteiro 6
    Nr final contador Inteiro 6
    Livre Char 45
    Fim Char 2
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Sinceramente não estou visualizando onde ainda existe dificuldade apos os exemplos postados,
dudu0566
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 74
Registrado em: Seg, 06 Ago 2007 3:59 pm
Localização: Campinas - SP
Eduardo Gomes

Acredito que haja um campo que faça a amarração do cabeçalho e do detalhe. Faça dois for, um dentro do outro de acordo com esta amarração.

Selecionar tudo

for c in (select "CABEÇALHO") loop
     "comando..."
     "comando..."
     for d in (select "DETALHE") loop
          "comando..." 
          "comando..."                
     end loop;
end loop;
Responder
  • Informação