Package br.com.flexait.nfse.builder

Source Code of br.com.flexait.nfse.builder.RpsBuilder

package br.com.flexait.nfse.builder;

import java.util.Calendar;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import br.com.flexait.nfse.converter.DateConverter;
import br.com.flexait.nfse.model.IdentificacaoRps;
import br.com.flexait.nfse.model.InfDeclaracaoPrestacaoServico;
import br.com.flexait.nfse.model.Prestador;
import br.com.flexait.nfse.model.Rps;
import br.com.flexait.nfse.model.RpsDetalhe;
import br.com.flexait.nfse.model.Servico;
import br.com.flexait.nfse.model.SimNao;
import br.com.flexait.nfse.model.Status;
import br.com.flexait.nfse.model.Tipo;
import br.com.flexait.nfse.model.Tomador;

public class RpsBuilder {
 
  private static final Logger LOG = LoggerFactory.getLogger(RpsBuilder.class);
 
  private final Rps rps;
 
  private final InfDeclaracaoPrestacaoServico infDeclaracaoPrestacaoServico;
 
  private final RpsDetalhe rpsDetalhe;
 
  private final IdentificacaoRps identificacaoRps;

  protected RpsBuilder() {
    rps = new Rps();
    infDeclaracaoPrestacaoServico = new InfDeclaracaoPrestacaoServico();
    rpsDetalhe = new RpsDetalhe();
    identificacaoRps = new IdentificacaoRps();
  }
 
  public Rps build() {
    rpsDetalhe.setIdentificacaoRps(identificacaoRps);
    infDeclaracaoPrestacaoServico.setRps(rpsDetalhe);
    rps.setInfDeclaracaoPrestacaoServico(infDeclaracaoPrestacaoServico);
    return rps;
  }

  public RpsBuilder withInfId(String id) {
    infDeclaracaoPrestacaoServico.setId(id);
    return this;
  }
 
  public InfDeclaracaoPrestacaoServico getInf() {
    return infDeclaracaoPrestacaoServico;
  }

  public RpsBuilder withId(String id) {
    rpsDetalhe.setId(id);
    return this;
  }

  public RpsBuilder withData(Calendar dataEmissao) {
    LOG.debug("Emissão: {}", convertDate(dataEmissao));
   
    rpsDetalhe.setDataEmissao(dataEmissao);
    return this;
  }

  public RpsBuilder normal() {
    rpsDetalhe.setStatus(Status.NORMAL);
    return this;
  }

  public RpsBuilder cancelado() {
    rpsDetalhe.setStatus(Status.CANCELADO);
    return this;
  }

  public RpsBuilder withNumero(long numero) {
    LOG.debug("RPS: {}", numero);
   
    identificacaoRps.setNumero(numero);
    return this;
  }

  public RpsBuilder tipoRps() {
    identificacaoRps.setTipo(Tipo.RPS);
    return this;
  }

  public RpsBuilder tipoMista() {
    identificacaoRps.setTipo(Tipo.MISTA);
    return this;
  }

  public RpsBuilder tipoCupom() {
    identificacaoRps.setTipo(Tipo.CUPOM);
    return this;
  }

  public RpsBuilder withCompetencia(Calendar competencia) {
    LOG.debug("Competência: {}", convertDate(competencia));
   
    infDeclaracaoPrestacaoServico.setCompetencia(competencia);
    return this;
  }

  private String convertDate(Calendar date) {
    return new DateConverter().toString(date);
  }

  public RpsBuilder withServico(Servico servico) {
    infDeclaracaoPrestacaoServico.setServico(servico);
    return this;
  }

  public RpsBuilder withPrestador(Prestador prestador) {
    infDeclaracaoPrestacaoServico.setPrestador(prestador);
    return this;
  }

  public RpsBuilder withTomador(Tomador tomador) {
    infDeclaracaoPrestacaoServico.setTomador(tomador);
    return this;
  }

  public RpsBuilder optanteSimplesNacional() {
    infDeclaracaoPrestacaoServico.setOptanteSimplesNacional(SimNao.SIM);
    return this;
  }
 
  public RpsBuilder naoOptanteSimplesNacional() {
    infDeclaracaoPrestacaoServico.setOptanteSimplesNacional(SimNao.NAO);
    return this;
  }

  public RpsBuilder comIncentivoFiscal() {
    infDeclaracaoPrestacaoServico.setIncentivoFiscal(SimNao.SIM);
    return this;
  }

  public RpsBuilder semIncentivoFiscal() {
    infDeclaracaoPrestacaoServico.setIncentivoFiscal(SimNao.NAO);
    return this;
  }

}
TOP

Related Classes of br.com.flexait.nfse.builder.RpsBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.