Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- includeOnce -1892821528 /* /products/DYADinfrastructure/library/objects/ObjetoModelo.ijs */
- includeOnce -1895935588 /* /products/DYADhrp/library/includes/Funcoes Auxiliares do DYADhrp/Funcoes de Uso Geral.ijs */
- /**
- *
- * Descrição : Objeto de geração dos arquivos de carga de
- * beneficiários que possuem produtos e-Pharma
- *
- * Autor : Leonardo Silveira
- *
- * Data de Criação : 28/12/2015
- *
- * Alterações(data,autor,obs) : 05/01/2016,Leonardo Silveira, movido para a
- * DELETROS de modo a fazer o fluxo normal de
- * publicação. A versão presente na HELETROS será
- * apagada e então trocada por esta.
- *
- * 07/01/2016,Leonardo Silveira, alterada a query
- * para trazer o código do produto acessório
- * também.
- *
- * 13/01/2016,Leonardo Silveira, corrigindo a
- * consulta que trouxe beneficiários que não
- * deveria
- *
- * 13/01/2016,Leonardo Silveira, efetuando as
- * mudanças necessárias para comportar os novos
- * contratos, planos e produtos
- *
- * 15/01/2016,Leonardo Silveira, efetuando as
- * mudanças necessárias para recuperar direito os
- * endereços dos beneficiários
- *
- * 18/01/2016,Leonardo Silveira, alterando o
- * endereço utilizado na coluna início de vigência
- * no layout de beneficiários
- *
- * 19/01/2016,Leonardo Silveira, alteração para
- * comportar a forma como a parametrização se
- * apresenta agora
- **/
- function GeradorDoArquivoePharma(){
- ObjetoModelo.call( this )
- }
- GeradorDoArquivoePharma.inherit = ObjetoModelo.inherit
- GeradorDoArquivoePharma.inherit( ObjetoModelo )
- /**
- * Descrição : mensagem trocada entre a process e o objeto de exportação
- * Parâmetros : parâmetro de entrada e de saída recebido da interface
- * Retorno : um ResponseObject com os dados para exportação
- **/
- GeradorDoArquivoePharma.prototype.geraArquivo =
- function GeradorDoArquivoePharma_geraArquivo( inOutParams ){
- try{
- this._validaParametros(inOutParams)
- var result = this._montaArquivo(inOutParams)
- return result
- }finally{
- if( this.dsBeneficiarios && !this.dsBeneficiarios.active){
- this.dsBeneficiarios.close()
- this.dsBeneficiarios = null
- }
- if( this.dsEnderecos && !this.dsEnderecos.active){
- this.dsEnderecos.close()
- this.dsEnderecos = null
- }
- }
- }
- /**
- * Descrição : comportamento privado de validação dos parâmetros recebidos
- * Parâmetros : parâmetro de entrada e de saída recebido da interface
- * Retorno : nenhum, mas pode subir exceção
- **/
- GeradorDoArquivoePharma.prototype._validaParametros =
- function GeradorDoArquivoePharma__validaParametros( inOutParams ){
- var functionName = "GeradorDoArquivoePharma__validaParametros()"
- obrigaPassagemDeParametroParaFuncao( functionName, "inOutParams", inOutParams )
- //obrigaPassagemDeParametroParaFuncao( functionName, "O codigo do plano deve ser informado", inOutParams.codplano )
- //obrigaPassagemDeParametroParaFuncao( functionName, "O codigo do cliente deve ser informado", inOutParams.codcliente )
- //obrigaPassagemDeParametroParaFuncao( functionName, "O codigo do produto deve ser informado", inOutParams.codproduto )
- //obrigaPassagemDeParametroParaFuncao( functionName, "O codigo do contrato deve ser informado", inOutParams.codcontrato )
- obrigaPassagemDeParametroParaFuncao( functionName, "A data de referência deve ser informada", inOutParams.dataReferencia )
- obrigaPassagemDeParametroParaFuncao( functionName, "Ao menos um cliente parametrizado deve ser informado", inOutParams.clienteEletros )
- }
- /**
- * Descrição : comportamento privado de construção de arquivo. basicamente o
- * roteiro seguido pra gerar o arquivo
- * Parâmetros : parâmetro de entrada e de saída recebido da interface
- * Retorno : o conteúdo do arquivo de exportação
- **/
- GeradorDoArquivoePharma.prototype._montaArquivo =
- function GeradorDoArquivoePharma__montaArquivo( inOutParams ){
- var res = new ResponseObject()
- this.contadorLinha = 1
- this._consultaFiltros(inOutParams)
- var linha = this._montaLinhaCabecalho(inOutParams)
- res.write(linha+"\r\n")
- this.contadorLinha++
- this._realizaConsulta(inOutParams)
- for(this.dsBeneficiarios.first();!this.dsBeneficiarios.eof;this.dsBeneficiarios.next()){
- linha = this._montaLinhaBeneficiarios(this.dsBeneficiarios,inOutParams)
- res.write(linha+"\r\n")
- this.contadorLinha++
- }
- this._realizaConsultaAuxiliar(inOutParams)
- for(this.dsEnderecos.first();!this.dsEnderecos.eof;this.dsEnderecos.next()){
- if(this.dsEnderecos.pessoacontrato.dependente == this.dsEnderecos.pessoacontrato.titular){
- linha = this._montaLinhaEnderecos(this.dsEnderecos,inOutParams)
- res.write(linha+"\r\n")
- this.contadorLinha++
- }
- }
- linha = this._montaLinhaRodape(inOutParams)
- res.write(linha+"\r\n")
- return res;
- }
- /**
- * Descrição : comportamento privado para completar os valores do filtro
- *
- * Parâmetros : parâmetro de entrada e de saída recebido da interface
- *
- * Retorno : nenhum, mas o filtro recebido será incrementado com os valores
- * do perfil de cliente selecionado
- **/
- GeradorDoArquivoePharma.prototype._consultaFiltros =
- function GeradorDoArquivoePharma_consultaFiltros( inOutParams ) {
- var q = "select * from tabela where chave = "+inOutParams.clienteEletros
- var dsPerfil = connection.getDataSet(q);
- inOutParams.codcontrato = dsPerfil.zcontratosepharma
- inOutParams.codproduto = dsPerfil.zprodutosepharma
- inOutParams.codplano = dsPerfil.zplanosepharma
- inOutParams.codcliente = dsPerfil.codigo
- inOutParams.agregador = dsPerfil.zcodigoagregadorepharma
- inOutParams.numerador = connection.createNumber(dsPerfil.znumeradorepharma)[2]
- dsPerfil.close()
- }
- /**
- * Descrição : comportamento privado de consulta de beneficiários
- * Parâmetros : parâmetro de entrada e de saída recebido da interface
- * Retorno : nenhum, mas instancia o dataSet de beneficiários
- **/
- GeradorDoArquivoePharma.prototype._realizaConsulta =
- function GeradorDoArquivoePharma__realizaConsulta( inOutParams ){
- var dtReferencia = inOutParams.dataReferencia.toSqlString()
- var q = "
- select
- contrato.codigo as codcontrato,
- plano.codigo as codplano,
- prod.codigo as codproduto,
- benef.nome as nomebeneficiario,
- endereco.uf as endestado,
- endereco.localidade as endcidade,
- endereco.sublocalidade as endbairro,
- endereco.logradouro as endlogradouro,
- endereco.numero as endnumero,
- endereco.complemento as endcomplemento,
- endereco.cep as endcep,
- adesao.*
- from
- vincula adesao
- join
- pessoacontrato pc on pc.chave = adesao.pessoacontrato
- join
- contrato on pc.contrato = contrato.chave
- join
- recurso plano on plano.chave = adesao.recurso
- join
- vincula prodacess on prodacess.pessoacontrato = pc.chave
- join
- recurso prod on prod.chave = prodacess.recurso
- join
- entidade benef on benef.chave = pc.dependente
- join
- vincula endereco on benef.chave = endereco.entidade
- where
- adesao.classe in (" + connection.getChildren( -1895935845 ) + ") /* Planos de Saude do Beneficiario */
- and endereco.Classe = -1897047821 /* Endereços / Principal */
- and plano.chave in (" + inOutParams.codplano + ")
- and prod.chave in (" + inOutParams.codproduto + ")
- and contrato.chave in (" + inOutParams.codcontrato + ")
- and adesao.inicio <= " + dtReferencia + "
- and (adesao.fim is null
- or adesao.fim >= " + dtReferencia + ")
- "
- this.dsBeneficiarios = connection.getDataSet(q)
- // caso não tenhamos resultados
- if(!this.dsBeneficiarios.recordCount)
- throw "A consulta não encontrou resultado.\nMude os parâmetros de busca e tente novamente."
- this.dsBeneficiarios.indexFieldNames="pessoacontrato.chcriacao;pessoacontrato.dependente.nome"
- }
- /**
- * Descrição : método privado de consulta de endereços de beneficiários
- * Parâmetros : lista com todas as chaves de beneficiários titulares
- * Retorno : nenhum, mas instancia o dataSet de endereços
- **/
- GeradorDoArquivoePharma.prototype._realizaConsultaAuxiliar =
- function GeradorDoArquivoePharma__realizaConsultaAuxiliar( inOutParams,chavesTitulares ){
- this.dsEnderecos = this.dsBeneficiarios
- }
- /**
- * Descrição : comportamento privado de montagem da linha de cabeçalho
- * Parâmetros : parâmetro de entrada e de saída recebido da interface
- * Retorno : a linha de abeçalho
- **/
- GeradorDoArquivoePharma.prototype._montaLinhaCabecalho =
- function GeradorDoArquivoePharma__montaLinhaCabecalho(inOutParams){
- var hoje = new Date()
- var dia = hoje.toString("dd/MM/yyyy")
- var hora = hoje.toString("HH:mm")
- // necessário após a alteração em 2016-01-18
- inOutParams.dia = dia
- inOutParams.hora = hora
- var linha = []
- // 00 - Header - Cabeçalho do Arquivo
- linha.push(padString("00", 2,"right","0"))
- linha.push(padString("0310", 4,"right","0"))
- linha.push(padString(inOutParams.agregador, 6,"right","0"))
- linha.push(padString(inOutParams.numerador, 6,"right","0"))
- linha.push(padString(dia, 10,"right"," "))
- linha.push(padString(hora, 5,"right"," "))
- linha.push(padString("T", 1,"right"," "))
- linha.push(padString(" ", 120,"right"," "))
- linha.push(padString(this.contadorLinha, 6,"right","0"))
- return linha.join("")
- }
- /**
- * Descrição : comportamento privado de montagem da linha de beneficiário
- * Parâmetros : o dataset já posicionado no beneficiário a ser colocado na linha
- * Retorno : a linha de beneficiário
- **/
- GeradorDoArquivoePharma.prototype._montaLinhaBeneficiarios =
- function GeradorDoArquivoePharma__montaLinhaBeneficiarios(dsBeneficiarios,inOutParams){
- var pessoacontrato = dsBeneficiarios.pessoacontrato
- var dependente = pessoacontrato.dependente
- var codBeneficio = dsBeneficiarios.codproduto
- var cpf = onlyNumbers(dependente.cgccpf)
- var dtnascimento = dependente.nascimento.toString("dd/MM/yyyy")
- var dtinicio = dsBeneficiarios.inicio.toString("dd/MM/yyyy")
- var dtfim = dsBeneficiarios.fim.toString("dd/MM/yyyy")
- var linha = []
- // 01 - Registro de Beneficiários (Registro que contém as informações dos beneficiários titulares e dependentes)
- linha.push(padString("01", 2,"right","0"))
- linha.push(padString("I", 1,"right"," "))
- linha.push(padString(inOutParams.codcliente, 6,"right","0"))
- linha.push(padString(codBeneficio, 6,"right","0"))
- linha.push(padString(dependente.nome, 50,"right"," "))
- linha.push(padString(pessoacontrato.codigo, 20,"left" ," "))
- linha.push(padString(pessoacontrato.zcoddependente, 2,"right","0"))
- linha.push(padString(dtnascimento, 10,"right"," "))
- linha.push(padString(" ", 14,"left" ," "))
- linha.push(padString(dependente.sexo, 1,"right"," "))
- linha.push(padString(inOutParams.dia, 10,"right"," "))
- linha.push(padString(dtfim, 10,"right"," "))
- linha.push(padString(cpf, 11,"right","0"))
- linha.push(padString(" ", 11,"right"," "))
- linha.push(padString(this.contadorLinha, 6,"right","0"))
- return linha.join("")
- }
- /**
- * Descrição : comportamento privado de montagem da linha de endereços
- * Parâmetros : o dataset de endereços e a chave do beneficiário titular
- * Retorno : a linha de endereço
- **/
- GeradorDoArquivoePharma.prototype._montaLinhaEnderecos =
- function GeradorDoArquivoePharma__montaLinhaEnderecos(dsEnderecos,inOutParams){
- var pessoacontrato = dsEnderecos.pessoacontrato
- var codBeneficio = dsEnderecos.codproduto
- var endcep = onlyNumbers(dsEnderecos.endcep)
- var endbairro = ""
- var endcidade = ""
- var endestado = ""
- if (dsEnderecos.endbairro) {
- endbairro = dsEnderecos.endbairro.nome
- }
- if (dsEnderecos.endcidade) {
- endcidade = dsEnderecos.endcidade.nome
- }
- if (dsEnderecos.endestado){
- endestado = dsEnderecos.endestado.codigo
- }
- var linha = []
- // 02 - Registro de Endereço de Beneficiarios "Informado apenas para o titular"
- linha.push(padString("02", 2,"right","0"))
- linha.push(padString(inOutParams.codcliente, 6,"right","0"))
- linha.push(padString(codBeneficio, 6,"right","0"))
- linha.push(padString(pessoacontrato.codigo, 20,"left" ," "))
- linha.push(padString(dsEnderecos.endlogradouro, 40,"right"," "))
- linha.push(padString(dsEnderecos.endnumero, 5,"right"," "))
- linha.push(padString(dsEnderecos.endcomplemento, 10,"right"," "))
- linha.push(padString(endbairro, 20,"right"," "))
- linha.push(padString(endcidade, 30,"right"," "))
- linha.push(padString(endestado, 2,"right"," "))
- linha.push(padString(endcep, 8,"right"," "))
- linha.push(padString(" ", 5,"right"," "))
- linha.push(padString(this.contadorLinha, 6,"right","0"))
- return linha.join("")
- }
- /**
- * Descrição : comportamento privado de montagem da linha de rodapé
- * Parâmetros : parâmetro de entrada e de saída recebido da interface
- * Retorno : a linha de rodapé
- **/
- GeradorDoArquivoePharma.prototype._montaLinhaRodape =
- function GeradorDoArquivoePharma__montaLinhaRodape(inOutParams){
- var linha = []
- linha.push(padString("99", 2,"right","0"))
- linha.push(padString(this.contadorLinha, 6,"right","0"))
- linha.push(padString(" ", 146,"right"," "))
- linha.push(padString(this.contadorLinha, 6,"right","0"))
- return linha.join("")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement