package com.ejie.ad74a.model;

import com.ejie.ad74a.util.comun.Utilidades;
import com.ejie.x38.serialization.JsonDateDeserializer;
import com.ejie.x38.serialization.JsonDateSerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.math.BigDecimal;
import java.util.Date;

/**
 * PagosBeneficiario generated by UDA, 04-oct-2023 9:26:03.
 * 
 * @author UDA
 */

public class PagosBeneficiario implements java.io.Serializable {

	private static final long serialVersionUID = 1L;
	private Long idPagoBeneficiario75;
	private BigDecimal tarifa75;
	private Solicitantes solicitantes;
	private Pagos pagos;
	private Long numDias75;
	private Date fAlta75;
	private String usuAlta75;
	private Date fModif75;
	private String usuModif75;
	private MaestroNivSoporte maestroNivSoporte;
	private Long idGradoDependencia;

	/**
	 * Method 'PagosBeneficiario'.
	 */
	public PagosBeneficiario() {
	}

	/**
	 * Method 'PagosBeneficiario'.
	 * 
	 * @param idPagoBeneficiario75 Long
	 */
	public PagosBeneficiario(Long idPagoBeneficiario75) {
		this.idPagoBeneficiario75 = idPagoBeneficiario75;
	}

	/**
	 * Method 'PagosBeneficiario'.
	 * 
	 * @param idPagoBeneficiario75 Long
	 * @param solicitantes         Solicitantes
	 * @param pagos                Pagos
	 * @param numDias75            Long
	 * @param fAlta75              Date
	 * @param usuAlta75            String
	 * @param fModif75             Date
	 * @param usuModif75           String
	 * @param maestroNivSoporte    MaestroNivSoporte
	 * @param tarifa75             BigDecimal
	 * @param idGradoDependencia   Long
	 */
	public PagosBeneficiario(Long idPagoBeneficiario75, Solicitantes solicitantes, Pagos pagos, Long numDias75,
			Date fAlta75, String usuAlta75, Date fModif75, String usuModif75, MaestroNivSoporte maestroNivSoporte,
			BigDecimal tarifa75, Long idGradoDependencia) {

		this.idPagoBeneficiario75 = idPagoBeneficiario75;
		this.tarifa75 = tarifa75;
		this.solicitantes = solicitantes;
		this.pagos = pagos;
		this.numDias75 = numDias75;
		this.fAlta75 = fAlta75;
		this.usuAlta75 = usuAlta75;
		this.fModif75 = fModif75;
		this.usuModif75 = usuModif75;
		this.maestroNivSoporte = maestroNivSoporte;
		this.idGradoDependencia = idGradoDependencia;
	}

	/**
	 * Method 'getIdPagoBeneficiario75'.
	 *
	 * @return Long
	 */

	public Long getIdPagoBeneficiario75() {
		return this.idPagoBeneficiario75;
	}

	/**
	 * Method 'setIdPagoBeneficiario75'.
	 *
	 * @param idPagoBeneficiario75 Long
	 * @return
	 */

	public void setIdPagoBeneficiario75(Long idPagoBeneficiario75) {
		this.idPagoBeneficiario75 = idPagoBeneficiario75;
	}

	/**
	 * Method 'getTarifa75'.
	 *
	 * @return BigDecimal
	 */

	public BigDecimal getTarifa75() {
		return this.tarifa75;
	}

	/**
	 * Method 'setTarifa75'.
	 *
	 * @param tarifa75 BigDecimal
	 * @return
	 */

	public void setTarifa75(BigDecimal tarifa75) {
		this.tarifa75 = tarifa75;
	}

	/**
	 * Method 'getSolicitantes'.
	 *
	 * @return Solicitantes
	 */

	public Solicitantes getSolicitantes() {
		return this.solicitantes;
	}

	/**
	 * Method 'setSolicitantes'.
	 *
	 * @param solicitantes Solicitantes
	 * @return
	 */

	public void setSolicitantes(Solicitantes solicitantes) {
		this.solicitantes = solicitantes;
	}

	/**
	 * Method 'getPagos'.
	 *
	 * @return Pagos
	 */

	public Pagos getPagos() {
		return this.pagos;
	}

	/**
	 * Method 'setPagos'.
	 *
	 * @param pagos Pagos
	 * @return
	 */

	public void setPagos(Pagos pagos) {
		this.pagos = pagos;
	}

	/**
	 * Method 'getNumDias75'.
	 *
	 * @return Long
	 */

	public Long getNumDias75() {
		return this.numDias75;
	}

	/**
	 * Method 'setNumDias75'.
	 *
	 * @param numDias75 Long
	 * @return
	 */

	public void setNumDias75(Long numDias75) {
		this.numDias75 = numDias75;
	}

	/**
	 * Method 'getfAlta75'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfAlta75() {
		return this.fAlta75;
	}

	/**
	 * Method 'setfAlta75'.
	 *
	 * @param fAlta75 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfAlta75(Date fAlta75) {
		this.fAlta75 = fAlta75;
	}

	/**
	 * Method 'getUsuAlta75'.
	 *
	 * @return String
	 */

	public String getUsuAlta75() {
		return this.usuAlta75;
	}

	/**
	 * Method 'setUsuAlta75'.
	 *
	 * @param usuAlta75 String
	 * @return
	 */

	public void setUsuAlta75(String usuAlta75) {
		this.usuAlta75 = usuAlta75;
	}

	/**
	 * Method 'getfModif75'.
	 *
	 * @return java.util.Date
	 */

	@JsonSerialize(using = JsonDateSerializer.class)
	public Date getfModif75() {
		return this.fModif75;
	}

	/**
	 * Method 'setfModif75'.
	 *
	 * @param fModif75 java.util.Date
	 * @return
	 */
	@JsonDeserialize(using = JsonDateDeserializer.class)
	public void setfModif75(Date fModif75) {
		this.fModif75 = fModif75;
	}

	/**
	 * Method 'getUsuModif75'.
	 *
	 * @return String
	 */

	public String getUsuModif75() {
		return this.usuModif75;
	}

	/**
	 * Method 'setUsuModif75'.
	 *
	 * @param usuModif75 String
	 * @return
	 */

	public void setUsuModif75(String usuModif75) {
		this.usuModif75 = usuModif75;
	}

	/**
	 * Method 'getMaestroNivSoporte'.
	 *
	 * @return MaestroNivSoporte
	 */

	public MaestroNivSoporte getMaestroNivSoporte() {
		return this.maestroNivSoporte;
	}

	/**
	 * Method 'setMaestroNivSoporte'.
	 *
	 * @param maestroNivSoporte MaestroNivSoporte
	 * @return
	 */

	public void setMaestroNivSoporte(MaestroNivSoporte maestroNivSoporte) {
		this.maestroNivSoporte = maestroNivSoporte;
	}

	/**
	 * Intended only for logging and debugging.
	 * 
	 * Here, the contents of every main field are placed into the result.
	 * 
	 * @return String
	 */
	@Override
	public String toString() {
		StringBuilder result = new StringBuilder();
		result.append(this.getClass().getName()).append(" Object { ");
		result.append(" [ idPagoBeneficiario75: ").append(this.idPagoBeneficiario75).append(" ]");
		result.append(", [ solicitantes: ").append(this.solicitantes).append(" ]");
		result.append(", [ pagos: ").append(this.pagos).append(" ]");
		result.append(", [ numDias75: ").append(this.numDias75).append(" ]");
		result.append(", [ fAlta75: ").append(this.fAlta75).append(" ]");
		result.append(", [ usuAlta75: ").append(this.usuAlta75).append(" ]");
		result.append(", [ fModif75: ").append(this.fModif75).append(" ]");
		result.append(", [ usuModif75: ").append(this.usuModif75).append(" ]");
		result.append(", [ maestroNivSoporte: ").append(this.maestroNivSoporte).append(" ]");
		result.append(", [ idGradoDependencia: ").append(this.idGradoDependencia).append(" ]");
		result.append("}");
		return result.toString();
	}

	/**
	 * Method 'getIdGradoDependencia'.
	 *
	 * @return Long
	 */
	public Long getIdGradoDependencia() {
		return idGradoDependencia;
	}

	/**
	 * Method 'setIdGradoDependencia'.
	 *
	 * @param idGradoDependencia Long
	 * @return
	 */
	public void setIdGradoDependencia(Long idGradoDependencia) {
		this.idGradoDependencia = idGradoDependencia;
	}

	/**
	 * Method 'getImporte'. Devuelve la tarifa multiplicada por el número de dias.
	 * 
	 * @return BigDecimal
	 */
	public BigDecimal getImporte() {
		BigDecimal importe = BigDecimal.ZERO;
		if (this.getTarifa75() != null && this.getNumDias75() != 0) {
			importe = this.getTarifa75().multiply(BigDecimal.valueOf(this.getNumDias75()));
		}
		return importe;
	}

	public String getTarifaStr() {
		return Utilidades.BDtoMonedaNDecimales(this.tarifa75, 4);
	}

	public String getImporteStr() {
		return Utilidades.BDtoMoneda(this.getImporte());
	}

}
