/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.web.gui.controladores.pricing;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Combobox;
import org.zkoss.zul.Datebox;
import org.zkoss.zul.Textbox;

import com.rjconsultores.ventaboletos.entidad.Categoria;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.CorridaCtrl;
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.Moneda;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.PricingEspecifico;
import com.rjconsultores.ventaboletos.entidad.PricingEspecificoOcupacion;
import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta;
import com.rjconsultores.ventaboletos.service.CategoriaService;
import com.rjconsultores.ventaboletos.service.ClaseServicioService;
import com.rjconsultores.ventaboletos.service.CorridaCtrlService;
import com.rjconsultores.ventaboletos.service.MarcaService;
import com.rjconsultores.ventaboletos.service.MonedaService;
import com.rjconsultores.ventaboletos.service.ParadaService;
import com.rjconsultores.ventaboletos.service.PricingEspecificoOcupacionService;
import com.rjconsultores.ventaboletos.service.PricingEspecificoService;
import com.rjconsultores.ventaboletos.service.TipoPuntoVentaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderPricingEspecificoOcupacion;

/**
 * 
 * @author CÃ¡ssio Rocha
 */
@Controller("editarPricingEspecificoController")
@Scope("prototype")
public class EditarPricingEspecificoController extends MyGenericForwardComposer {

	private static final long serialVersionUID = 1L;
	private static Logger log = Logger.getLogger(EditarPricingController.class);

	@Autowired
	private PricingEspecificoService pricingEspecificoService;
	@Autowired
	private TipoPuntoVentaService puntoVentaService;
	@Autowired
	private CategoriaService categoriaService;
	@Autowired
	private ClaseServicioService claseServicioService;
	@Autowired
	private MarcaService marcaService;
	@Autowired
	private ParadaService paradaService;
	@Autowired
	private MonedaService monedaService;
	@Autowired
	private CorridaCtrlService corridaCtrlService;
	@Autowired
	private PricingEspecificoOcupacionService pricingEspecificoOcupacionService;

	private PricingEspecifico pricingEspecifico;
	private MyListbox pricingList;
	private Combobox cmbPtovta;
	private Combobox cmbCategoria;
	private Combobox cmbServicio;
	private Combobox cmbMarca;
	private Combobox cmbOrigem;
	private Combobox cmbMoneda;
	private Combobox cmbDestino;
	private List<TipoPuntoVenta> lsPtovata;
	private List<Categoria> lsCategoria;
	private List<ClaseServicio> lsclaseServicio;
	private List<Marca> lsMarca;
	private List<Moneda> lsMoneda;
	private Button btnApagar;
	private Datebox fechaInicio;
	private Datebox fechaFin;
	private Textbox nombrePricing;
	private Textbox tarifaAbierto;

	private MyListbox pricingListEspOcupacion;
	private List<PricingEspecificoOcupacion> pricingEspecificoADesativar;

	@Override
	public void doAfterCompose(Component comp) throws Exception {
		lsCategoria = categoriaService.obtenerTodos();
		lsMarca = marcaService.buscarMarcaPorEmpresa(UsuarioLogado.getUsuarioLogado().getEmpresa());
		lsMoneda = monedaService.obtenerTodos();
		lsPtovata = puntoVentaService.obtenerTodos();
		lsclaseServicio = claseServicioService.obtenerTodos();
		pricingEspecifico = (PricingEspecifico) Executions.getCurrent().getArg().get("pricingEspecifico");
		pricingList = (MyListbox) Executions.getCurrent().getArg().get("pricingList");
		pricingEspecificoADesativar = new ArrayList<PricingEspecificoOcupacion>();

		super.doAfterCompose(comp);

		pricingListEspOcupacion.setItemRenderer(new RenderPricingEspecificoOcupacion());

		if (pricingEspecifico.getPricingespecificoId() == null) {
			btnApagar.setVisible(Boolean.FALSE);
		} else {
			Parada origem = pricingEspecifico.getParada();
			if (origem != null) {
				cmbOrigem.setText(origem.getDescparada());
			}

			Parada destino = pricingEspecifico.getParada1();
			if (destino != null) {
				cmbDestino.setText(destino.getDescparada());
			}

			pricingEspecifico = pricingEspecificoService.obtenerID(pricingEspecifico.getPricingespecificoId());

			pricingListEspOcupacion.setData(pricingEspecifico.getPricingEspecificoOcupacionsListActivos());
			pricingListEspOcupacion.addEventListener("onDoubleClick", new EventListener() {

				@Override
				public void onEvent(Event event) throws Exception {
					PricingEspecificoOcupacion especificoOcupacion = (PricingEspecificoOcupacion) pricingListEspOcupacion.getSelected();
					verPricingEspecificoOcupacion(especificoOcupacion, true);
				}
			});
		}

		fechaInicio.focus();
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void verPricingEspecificoOcupacion(PricingEspecificoOcupacion especificoOcupacion, Boolean isEdicao) {

		Map args = new HashMap();
		args.put("pricingEspecifico", pricingEspecifico);
		args.put("pricingEspecificoOcupacion", especificoOcupacion);
		args.put("isEdicao", isEdicao);
		args.put("pricingListEspOcupacion", pricingListEspOcupacion);

		openWindow("/gui/pricing/editarPricingEspecificoOcupacion.zul",
				Labels.getLabel("editarPricingController.window.title"), args, MODAL);
	}

	public void onClick$btnNovoPricingEspOcup(Event ev) throws InterruptedException {
		verPricingEspecificoOcupacion(new PricingEspecificoOcupacion(), false);
	}

	public void onClick$btnApagarPricingEspOcup(Event ev) throws InterruptedException {
		if (pricingListEspOcupacion.getSelected() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.selectItem"),
					Labels.getLabel("editarPricingController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
		} else {
			int resp = Messagebox.show(Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.borrarPergunta"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
			if (resp == Messagebox.YES) {
				PricingEspecificoOcupacion especificoOcupacion = (PricingEspecificoOcupacion) pricingListEspOcupacion.getSelected();

				if (especificoOcupacion.getPricingEspecificoOcupacionId() != null) {
					especificoOcupacion.setActivo(false);
					pricingListEspOcupacion.removeItem(especificoOcupacion);
					pricingEspecificoADesativar.add(especificoOcupacion);
				} else {
					pricingListEspOcupacion.removeSelectedItem();
					removerPricingOcupacion(especificoOcupacion);
				}
			}
		}
	}

	private void removerPricingOcupacion(PricingEspecificoOcupacion especificoOcupacion) {
		if (especificoOcupacion.getPricingEspecificoOcupacionId() != null) {
			pricingEspecifico.getPricingEspecificoOcupacionsList().remove(especificoOcupacion);
		} else {
			int index = 0;
			for (PricingEspecificoOcupacion pricingEspecificoOcupacion : pricingEspecifico.getPricingEspecificoOcupacionsList()) {
				if (pricingEspecificoOcupacion.getOcupacionfinal().equals(especificoOcupacion.getOcupacionfinal()) &&
						pricingEspecificoOcupacion.getOcupacioninicial().equals(especificoOcupacion.getOcupacioninicial()) &&
						pricingEspecificoOcupacion.getTarifa().equals(especificoOcupacion.getTarifa())) {
					break;
				}
				index++;
			}
			pricingEspecifico.getPricingEspecificoOcupacionsList().remove(index - 1);
		}
	}

	public void onClick$btnModificarPricingEspOcup(Event ev) {
		PricingEspecificoOcupacion especificoOcupacion = (PricingEspecificoOcupacion) pricingListEspOcupacion.getSelected();

		if (especificoOcupacion != null) {
			verPricingEspecificoOcupacion(especificoOcupacion, true);
		} else {
			try {
				Messagebox.show(Labels.getLabel("editarPricingController.MSG.selectItem"),
						Labels.getLabel("editarPricingController.windowVigencia.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);
			} catch (InterruptedException ex) {
				log.error("", ex);
			}
		}
	}

	public void onClick$btnApagar(Event e) {
		// EsclusÃ£o Logica
		try {
			int resp = Messagebox.show(
					Labels.getLabel("editarPricingController.MSG.borrarPergunta"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

			if (resp == Messagebox.YES) {
				pricingEspecificoService.borrar(pricingEspecifico);
				Messagebox.show(
						Labels.getLabel("editarPricingController.MSG.borrarOK"),
						Labels.getLabel("busquedaPricingEspecificoController.window.title"),
						Messagebox.OK, Messagebox.INFORMATION);

				pricingList.removeItem(pricingEspecifico);

				closeWindow();
			}
		} catch (Exception ex) {
			log.error(ex);
		}
	}

	public void onClick$btnSalvar(Event ev) throws InterruptedException {
		nombrePricing.getValue();
		fechaInicio.getValue();
		fechaFin.getValue();
		tarifaAbierto.getValue();

		pricingEspecifico.getPricingEspecificoOcupacionsList().clear();
		for (Object o : pricingListEspOcupacion.getData()) {
			PricingEspecificoOcupacion p = (PricingEspecificoOcupacion) o;
			pricingEspecifico.getPricingEspecificoOcupacionsList().add(p);
		}

		if (pricingEspecifico.getTipoPtovta() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.tipoPtoVta"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
			return;
		}

		if (pricingEspecifico.getCategoria() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.categoria"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);

			return;
		}

		if (pricingEspecifico.getClaseServicio() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.claseServicio"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);

			return;
		}

		if (pricingEspecifico.getMarca() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.marca"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);

			return;
		}

		if (pricingEspecifico.getParada() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.origen"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);

			return;
		}

		if (pricingEspecifico.getParada1() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.destino"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);

			return;
		}

		if (pricingEspecifico.getMoneda() == null) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.moneda"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);

			return;
		}

		if (pricingEspecifico.getFechorinicio().after(pricingEspecifico.getFechorfin())) {
			Messagebox.show(Labels.getLabel("editarPricingController.MSG.datasFecha"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);

			return;
		}

		if (pricingEspecifico.getCorridaId() != null) {
			CorridaCtrl corridaCtrlId = corridaCtrlService.obtenerID(pricingEspecifico.getCorridaId());
			if (corridaCtrlId == null) {
				Messagebox.show(Labels.getLabel("editarPricingController.MSG.corridaId", new Object[] { pricingEspecifico.getCorridaId() }),
						Labels.getLabel("busquedaPricingEspecificoController.window.title"),
						Messagebox.OK, Messagebox.EXCLAMATION);

				return;
			} else {
				CorridaCtrl corridaCtrlFinal = corridaCtrlService.buscar(
						pricingEspecifico.getCorridaId(),
						pricingEspecifico.getParada(),
						pricingEspecifico.getParada1(),
						pricingEspecifico.getClaseServicio(),
						pricingEspecifico.getMarca());

				if (corridaCtrlFinal == null) {
					Integer opcao = Messagebox.show(Labels.getLabel("editarPricingController.MSG.corridaIdFinalNaoExiste", new Object[] { pricingEspecifico.getCorridaId() }),
							Labels.getLabel("busquedaPricingEspecificoController.window.title"),
							Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

					if (opcao.equals(Messagebox.NO)) {
						return;
					}
				}
			}
		}

		if (!validarPricingEspecificoOcupacion()) {
			return;
		}

		List<PricingEspecifico> lsPricing = pricingEspecificoService.buscarPorNome(pricingEspecifico);
		boolean podeSalvar = false;
		if (lsPricing.isEmpty()) {
			podeSalvar = true;
		} else {
			for (PricingEspecifico p : lsPricing) {
				if (p.getPricingespecificoId().equals(pricingEspecifico.getPricingespecificoId())) {
					podeSalvar = true;
				}
			}
		}

		if (podeSalvar) {
			if (pricingEspecifico.getPricingespecificoId() == null) {
				pricingEspecificoService.suscribir(pricingEspecifico);
				pricingList.addItemNovo(pricingEspecifico);
			} else {
				pricingEspecificoService.actualizacion(pricingEspecifico);
				pricingList.updateItem(pricingEspecifico);
			}

			desativarPricingEspecificoOcupacionDesativados();

			Messagebox.show(Labels.getLabel("editarPricingController.MSG.suscribirOK"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.INFORMATION);

			closeWindow();
		} else {
			Messagebox.show(
					Labels.getLabel("MSG.Registro.Existe"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
		}

	}

	private void desativarPricingEspecificoOcupacionDesativados() {
		for (PricingEspecificoOcupacion p : pricingEspecificoADesativar) {
			pricingEspecificoOcupacionService.actualizacion(p);
		}
	}

	/**
	 * Valida se a lista de ocupações são subsequentes e se a primeira ocupação possui ocupação inicial igual a 1.
	 * 
	 * @return
	 * @throws InterruptedException
	 */
	private boolean validarPricingEspecificoOcupacion() throws InterruptedException {
		if (pricingEspecifico.getPricingEspecificoOcupacionsListActivos() == null || pricingEspecifico.getPricingEspecificoOcupacionsListActivos().isEmpty()) {
			Messagebox.show(
					Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.noPricingEspecificoOcupacion"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
			return false;
		}

		List<PricingEspecificoOcupacion> sOcupacionInicial = new ArrayList<PricingEspecificoOcupacion>(pricingEspecifico.getPricingEspecificoOcupacionsListActivos());
		Collections.sort(sOcupacionInicial, new Comparator<PricingEspecificoOcupacion>() {

			@Override
			public int compare(PricingEspecificoOcupacion o1, PricingEspecificoOcupacion o2) {
				return o1.getOcupacioninicial().compareTo(o2.getOcupacioninicial());
			}
		});

		if (sOcupacionInicial.iterator().next().getOcupacioninicial().intValue() != 1) {
			Messagebox.show(
					Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionInicial"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
			return false;
		}

		boolean pricingEspecificoOcupacionNoSubsequente = false;
		for (int i = 0; i < sOcupacionInicial.size(); i++) {
			PricingEspecificoOcupacion pricingEspecificoOcupacion = sOcupacionInicial.get(i);
			PricingEspecificoOcupacion pricingEspecificoOcupacionAnterior = null;

			if (i > 0) {
				pricingEspecificoOcupacionAnterior = sOcupacionInicial.get(i - 1);
			}

			if (pricingEspecificoOcupacionAnterior != null
					&& pricingEspecificoOcupacionAnterior.getOcupacionfinal().add(new BigDecimal(1)).doubleValue() != pricingEspecificoOcupacion.getOcupacioninicial().doubleValue()) {
				pricingEspecificoOcupacionNoSubsequente = true;
				break;
			}
		}

		if (pricingEspecificoOcupacionNoSubsequente) {
			Messagebox.show(
					Labels.getLabel("editarPricingEspecificoOcupacionController.MSG.pricingEspecificoOcupacionNoSubsequente"),
					Labels.getLabel("busquedaPricingEspecificoController.window.title"),
					Messagebox.OK, Messagebox.EXCLAMATION);
			return false;
		}

		return true;
	}

	/**
	 * @return the pricingEspecificoService
	 */
	public PricingEspecificoService getPricingEspecificoService() {
		return pricingEspecificoService;
	}

	/**
	 * @param pricingEspecificoService
	 *            the pricingEspecificoService to set
	 */
	public void setPricingEspecificoService(PricingEspecificoService pricingEspecificoService) {
		this.pricingEspecificoService = pricingEspecificoService;
	}

	/**
	 * @return the pricingEspecifico
	 */
	public PricingEspecifico getPricingEspecifico() {
		return pricingEspecifico;
	}

	/**
	 * @param pricingEspecifico
	 *            the pricingEspecifico to set
	 */
	public void setPricingEspecifico(PricingEspecifico pricingEspecifico) {
		this.pricingEspecifico = pricingEspecifico;
	}

	/**
	 * @return the pricingList
	 */
	public MyListbox getPricingList() {
		return pricingList;
	}

	/**
	 * @param pricingList
	 *            the pricingList to set
	 */
	public void setPricingList(MyListbox pricingList) {
		this.pricingList = pricingList;
	}

	/**
	 * @return the cmbPtovta
	 */
	public Combobox getCmbPtovta() {
		return cmbPtovta;
	}

	/**
	 * @param cmbPtovta
	 *            the cmbPtovta to set
	 */
	public void setCmbPtovta(Combobox cmbPtovta) {
		this.cmbPtovta = cmbPtovta;
	}

	/**
	 * @return the cmbCategoria
	 */
	public Combobox getCmbCategoria() {
		return cmbCategoria;
	}

	/**
	 * @param cmbCategoria
	 *            the cmbCategoria to set
	 */
	public void setCmbCategoria(Combobox cmbCategoria) {
		this.cmbCategoria = cmbCategoria;
	}

	/**
	 * @return the cmbServicio
	 */
	public Combobox getCmbServicio() {
		return cmbServicio;
	}

	/**
	 * @param cmbServicio
	 *            the cmbServicio to set
	 */
	public void setCmbServicio(Combobox cmbServicio) {
		this.cmbServicio = cmbServicio;
	}

	/**
	 * @return the cmbMarca
	 */
	public Combobox getCmbMarca() {
		return cmbMarca;
	}

	/**
	 * @param cmbMarca
	 *            the cmbMarca to set
	 */
	public void setCmbMarca(Combobox cmbMarca) {
		this.cmbMarca = cmbMarca;
	}

	/**
	 * @return the cmbOrigem
	 */
	public Combobox getCmbOrigem() {
		return cmbOrigem;
	}

	/**
	 * @param cmbOrigem
	 *            the cmbOrigem to set
	 */
	public void setCmbOrigem(Combobox cmbOrigem) {
		this.cmbOrigem = cmbOrigem;
	}

	/**
	 * @return the cmbMoneda
	 */
	public Combobox getCmbMoneda() {
		return cmbMoneda;
	}

	/**
	 * @param cmbMoneda
	 *            the cmbMoneda to set
	 */
	public void setCmbMoneda(Combobox cmbMoneda) {
		this.cmbMoneda = cmbMoneda;
	}

	/**
	 * @return the cmbDestino
	 */
	public Combobox getCmbDestino() {
		return cmbDestino;
	}

	/**
	 * @param cmbDestino
	 *            the cmbDestino to set
	 */
	public void setCmbDestino(Combobox cmbDestino) {
		this.cmbDestino = cmbDestino;
	}

	/**
	 * @return the lsPtovata
	 */
	public List<TipoPuntoVenta> getLsPtovata() {
		return lsPtovata;
	}

	/**
	 * @param lsPtovata
	 *            the lsPtovata to set
	 */
	public void setLsPtovata(List<TipoPuntoVenta> lsPtovata) {
		this.lsPtovata = lsPtovata;
	}

	/**
	 * @return the lsCategoria
	 */
	public List<Categoria> getLsCategoria() {
		return lsCategoria;
	}

	/**
	 * @param lsCategoria
	 *            the lsCategoria to set
	 */
	public void setLsCategoria(List<Categoria> lsCategoria) {
		this.lsCategoria = lsCategoria;
	}

	/**
	 * @return the lsclaseServicio
	 */
	public List<ClaseServicio> getLsclaseServicio() {
		return lsclaseServicio;
	}

	/**
	 * @param lsclaseServicio
	 *            the lsclaseServicio to set
	 */
	public void setLsclaseServicio(List<ClaseServicio> lsclaseServicio) {
		this.lsclaseServicio = lsclaseServicio;
	}

	/**
	 * @return the lsMarca
	 */
	public List<Marca> getLsMarca() {
		return lsMarca;
	}

	/**
	 * @param lsMarca
	 *            the lsMarca to set
	 */
	public void setLsMarca(List<Marca> lsMarca) {
		this.lsMarca = lsMarca;
	}

	/**
	 * @return the lsMoneda
	 */
	public List<Moneda> getLsMoneda() {
		return lsMoneda;
	}

	/**
	 * @param lsMoneda
	 *            the lsMoneda to set
	 */
	public void setLsMoneda(List<Moneda> lsMoneda) {
		this.lsMoneda = lsMoneda;
	}

	/**
	 * @return the puntoVentaService
	 */
	public TipoPuntoVentaService getPuntoVentaService() {
		return puntoVentaService;
	}

	/**
	 * @param puntoVentaService
	 *            the puntoVentaService to set
	 */
	public void setPuntoVentaService(TipoPuntoVentaService puntoVentaService) {
		this.puntoVentaService = puntoVentaService;
	}

	/**
	 * @return the categoriaService
	 */
	public CategoriaService getCategoriaService() {
		return categoriaService;
	}

	/**
	 * @param categoriaService
	 *            the categoriaService to set
	 */
	public void setCategoriaService(CategoriaService categoriaService) {
		this.categoriaService = categoriaService;
	}

	/**
	 * @return the claseServicioService
	 */
	public ClaseServicioService getClaseServicioService() {
		return claseServicioService;
	}

	/**
	 * @param claseServicioService
	 *            the claseServicioService to set
	 */
	public void setClaseServicioService(ClaseServicioService claseServicioService) {
		this.claseServicioService = claseServicioService;
	}

	/**
	 * @return the marcaService
	 */
	public MarcaService getMarcaService() {
		return marcaService;
	}

	/**
	 * @param marcaService
	 *            the marcaService to set
	 */
	public void setMarcaService(MarcaService marcaService) {
		this.marcaService = marcaService;
	}

	/**
	 * @return the paradaService
	 */
	public ParadaService getParadaService() {
		return paradaService;
	}

	/**
	 * @param paradaService
	 *            the paradaService to set
	 */
	public void setParadaService(ParadaService paradaService) {
		this.paradaService = paradaService;
	}

	/**
	 * @return the monedaService
	 */
	public MonedaService getMonedaService() {
		return monedaService;
	}

	/**
	 * @param monedaService
	 *            the monedaService to set
	 */
	public void setMonedaService(MonedaService monedaService) {
		this.monedaService = monedaService;
	}

	public MyListbox getPricingListEspOcupacion() {
		return pricingListEspOcupacion;
	}

	public void setPricingListEspOcupacion(MyListbox pricingListEspOcupacion) {
		this.pricingListEspOcupacion = pricingListEspOcupacion;
	}

	public Textbox getTarifaAbierto() {
		return tarifaAbierto;
	}

	public void setTarifaAbierto(Textbox tarifaAbierto) {
		this.tarifaAbierto = tarifaAbierto;
	}

}
