// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/PeriodoEmissao.java
// public class PeriodoEmissao {
//   @XStreamAlias("DataInicial")
//   @XStreamConverter(LocalDateConversor.class)
//   @NotNull
//   private LocalDate dataInicial;
// 
//   @XStreamAlias("DataFinal")
//   @XStreamConverter(LocalDateConversor.class)
//   @NotNull
//   private LocalDate dataFinal;
// 
//   public PeriodoEmissao(LocalDate dataInicial, LocalDate dataFinal) {
//     this.dataInicial = dataInicial;
//     if (dataFinal.isAfter(LocalDate.now())) {
//       throw new DateTimeException("Data final nao pode ser maior que a atual");
//     }
//     this.dataFinal = dataFinal;
//   }
// 
//   public LocalDate getDataInicial() {
//     return dataInicial;
//   }
// 
//   public LocalDate getDataFinal() {
//     return dataFinal;
//   }
// }
// 
// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/RpsIntermediario.java
// public class RpsIntermediario {
// 
//   @XStreamAlias("RazaoSocial")
//   @NotNull
//   @Size(min = 1, max = 115)
//   private String nome;
//   
//   @XStreamAlias("CpfCnpj")
//   @NotNull
//   private RpsIntermediarioCpfCnpj cpfCnpj;
//   
//   @XStreamAlias("InscricaoMunicipal")
//   @Size(min=1, max=15)
//   private String inscricaoMunicipal;
//   
//   public RpsIntermediario(IntermediarioBuilder builder){
//     
//     this.nome = builder.getNome();
//     this.cpfCnpj = builder.getCpfCnpj();
//     this.inscricaoMunicipal = builder.getInscricaoMunicipal();
// 
//   }
// 
//   public String getNome() {
//     return nome;
//   }
// 
//   public RpsIntermediarioCpfCnpj getCpfCnpj() {
//     return cpfCnpj;
//   }
// 
//   public String getInscricaoMunicipal() {
//     return inscricaoMunicipal;
//   }
//   
// }
// 
// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/RpsPrestador.java
// public class RpsPrestador {
// 
//   @XStreamAlias("Cnpj")
//   @NotNull
//   @CNPJ
//   private String cnpj;
// 
//   @XStreamAlias("InscricaoMunicipal")
//   @Size(min = 1, max = 15)
//   private String inscricaoMunicipal;
// 
//   public RpsPrestador(PrestadorBuilder builder) {
//     this.cnpj = builder.getCnpj();
//     this.inscricaoMunicipal = builder.getInscricaoMunicipal();
//   }
// 
//   public String getCnpj() {
//     return cnpj;
//   }
// 
//   public String getInscricaoMunicipal() {
//     return inscricaoMunicipal;
//   }
// 
// }
// 
// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/RpsTomadorIdentificacao.java
// public class RpsTomadorIdentificacao {
// 
//   @XStreamAlias("CpfCnpj")
//   private RpsTomadorCpfCnpj cpfCnpj;
// 
//   @XStreamAlias("InscricaoMunicipal")
//   @Size(min=1, max=15)
//   private String inscricaoMunicipal;
// 
//   public RpsTomadorIdentificacao(TomadorIdentificacaoBuilder builder) {
//     this.inscricaoMunicipal = builder.getInscricaoMunicipal();
//     this.cpfCnpj = builder.getCpfCnpj();
//   }
// 
//   public RpsTomadorCpfCnpj getCpfCnpj() {
//     return cpfCnpj;
//   }
// 
//   public String getInscricaoMunicipal() {
//     return inscricaoMunicipal;
//   }
// 
// }


import java.time.LocalDate;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.pablodomingos.classes.rps.PeriodoEmissao;
import com.pablodomingos.classes.rps.RpsIntermediario;
import com.pablodomingos.classes.rps.RpsPrestador;
import com.pablodomingos.classes.rps.RpsTomadorIdentificacao;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

package com.pablodomingos.classes.rps.servicos;




@XStreamAlias("ConsultarNfseEnvio")
public class NFSeConsulta extends AbstractService{

  @XStreamAlias("xmlns")
  @XStreamAsAttribute
  private String xmlns = "http://www.abrasf.org.br/nfse.xsd";

  @XStreamAlias("Prestador")
  @NotNull
  private RpsPrestador prestador;

  @XStreamAlias("NumeroNfse")
  @Size(min = 15, max = 15)
  private String numeroNFSe;
  
  @XStreamAlias("PeriodoEmissao")
  @NotNull
  private PeriodoEmissao periodoEmissao;
  
  @XStreamAlias("Tomador")
  private RpsTomadorIdentificacao tomador;

  @XStreamAlias("IntermediarioServico")
  private RpsIntermediario intermediario;
  
  public NFSeConsulta(RpsPrestador prestador, LocalDate dataInicial, LocalDate dataFinal) {
    super();
    this.prestador = prestador;

// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/PeriodoEmissao.java
// public class PeriodoEmissao {
//   @XStreamAlias("DataInicial")
//   @XStreamConverter(LocalDateConversor.class)
//   @NotNull
//   private LocalDate dataInicial;
// 
//   @XStreamAlias("DataFinal")
//   @XStreamConverter(LocalDateConversor.class)
//   @NotNull
//   private LocalDate dataFinal;
// 
//   public PeriodoEmissao(LocalDate dataInicial, LocalDate dataFinal) {
//     this.dataInicial = dataInicial;
//     if (dataFinal.isAfter(LocalDate.now())) {
//       throw new DateTimeException("Data final nao pode ser maior que a atual");
//     }
//     this.dataFinal = dataFinal;
//   }
// 
//   public LocalDate getDataInicial() {
//     return dataInicial;
//   }
// 
//   public LocalDate getDataFinal() {
//     return dataFinal;
//   }
// }
// 
// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/RpsIntermediario.java
// public class RpsIntermediario {
// 
//   @XStreamAlias("RazaoSocial")
//   @NotNull
//   @Size(min = 1, max = 115)
//   private String nome;
//   
//   @XStreamAlias("CpfCnpj")
//   @NotNull
//   private RpsIntermediarioCpfCnpj cpfCnpj;
//   
//   @XStreamAlias("InscricaoMunicipal")
//   @Size(min=1, max=15)
//   private String inscricaoMunicipal;
//   
//   public RpsIntermediario(IntermediarioBuilder builder){
//     
//     this.nome = builder.getNome();
//     this.cpfCnpj = builder.getCpfCnpj();
//     this.inscricaoMunicipal = builder.getInscricaoMunicipal();
// 
//   }
// 
//   public String getNome() {
//     return nome;
//   }
// 
//   public RpsIntermediarioCpfCnpj getCpfCnpj() {
//     return cpfCnpj;
//   }
// 
//   public String getInscricaoMunicipal() {
//     return inscricaoMunicipal;
//   }
//   
// }
// 
// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/RpsPrestador.java
// public class RpsPrestador {
// 
//   @XStreamAlias("Cnpj")
//   @NotNull
//   @CNPJ
//   private String cnpj;
// 
//   @XStreamAlias("InscricaoMunicipal")
//   @Size(min = 1, max = 15)
//   private String inscricaoMunicipal;
// 
//   public RpsPrestador(PrestadorBuilder builder) {
//     this.cnpj = builder.getCnpj();
//     this.inscricaoMunicipal = builder.getInscricaoMunicipal();
//   }
// 
//   public String getCnpj() {
//     return cnpj;
//   }
// 
//   public String getInscricaoMunicipal() {
//     return inscricaoMunicipal;
//   }
// 
// }
// 
// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/RpsTomadorIdentificacao.java
// public class RpsTomadorIdentificacao {
// 
//   @XStreamAlias("CpfCnpj")
//   private RpsTomadorCpfCnpj cpfCnpj;
// 
//   @XStreamAlias("InscricaoMunicipal")
//   @Size(min=1, max=15)
//   private String inscricaoMunicipal;
// 
//   public RpsTomadorIdentificacao(TomadorIdentificacaoBuilder builder) {
//     this.inscricaoMunicipal = builder.getInscricaoMunicipal();
//     this.cpfCnpj = builder.getCpfCnpj();
//   }
// 
//   public RpsTomadorCpfCnpj getCpfCnpj() {
//     return cpfCnpj;
//   }
// 
//   public String getInscricaoMunicipal() {
//     return inscricaoMunicipal;
//   }
// 
// }


// Path: nfse-bh/src/main/java/com/pablodomingos/classes/rps/servicos/NFSeConsulta.java
import java.time.LocalDate;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import com.pablodomingos.classes.rps.PeriodoEmissao;
import com.pablodomingos.classes.rps.RpsIntermediario;
import com.pablodomingos.classes.rps.RpsPrestador;
import com.pablodomingos.classes.rps.RpsTomadorIdentificacao;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

package com.pablodomingos.classes.rps.servicos;




@XStreamAlias("ConsultarNfseEnvio")
public class NFSeConsulta extends AbstractService{

  @XStreamAlias("xmlns")
  @XStreamAsAttribute
  private String xmlns = "http://www.abrasf.org.br/nfse.xsd";

  @XStreamAlias("Prestador")
  @NotNull
  private RpsPrestador prestador;

  @XStreamAlias("NumeroNfse")
  @Size(min = 15, max = 15)
  private String numeroNFSe;
  
  @XStreamAlias("PeriodoEmissao")
  @NotNull
  private PeriodoEmissao periodoEmissao;
  
  @XStreamAlias("Tomador")
  private RpsTomadorIdentificacao tomador;

  @XStreamAlias("IntermediarioServico")
  private RpsIntermediario intermediario;
  
  public NFSeConsulta(RpsPrestador prestador, LocalDate dataInicial, LocalDate dataFinal) {
    super();
    this.prestador = prestador;

    this.periodoEmissao = new PeriodoEmissao(dataInicial, dataFinal);
