package com.rjconsultores.ventaboletos.web.gui.controladores.configuracioneccomerciales.cyberviaje;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.ProdClaseServicio;
import com.rjconsultores.ventaboletos.entidad.ProdFormaPago;
import com.rjconsultores.ventaboletos.entidad.ProdMarca;
import com.rjconsultores.ventaboletos.entidad.ProdMercado;
import com.rjconsultores.ventaboletos.entidad.ProdPrecio;
import com.rjconsultores.ventaboletos.entidad.ProdPuntoVenta;
import com.rjconsultores.ventaboletos.entidad.ProdRuta;
import com.rjconsultores.ventaboletos.entidad.ProdTipoptovta;
import com.rjconsultores.ventaboletos.entidad.ProdVigencia;
import com.rjconsultores.ventaboletos.entidad.ProductoServicio;
import com.rjconsultores.ventaboletos.service.MarcaService;
import com.rjconsultores.ventaboletos.service.ProdPrecioService;
import com.rjconsultores.ventaboletos.service.ProductoServicioService;
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.RenderCyberViajeProdClaseServicio;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCyberViajeProdFormaPago;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCyberViajeProdMarca;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCyberViajeProdMercado;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCyberViajeProdPuntoVenta;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCyberViajeProdRuta;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCyberViajeProdTipoptovta;
import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCyberViajeProdVigencia;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
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.Radio;
import org.zkoss.zul.Textbox;

/**
 *
 * @author Rafius
 */
@Controller("editarProductoServicioController")
@Scope("prototype")
public class EditarProductoServicioController extends MyGenericForwardComposer {

    @Autowired
    private ProductoServicioService productoServicioService;
    @Autowired
    private MarcaService marcaService;
    @Autowired
    private ProdPrecioService prodPrecioService;
    private ProductoServicio productoServicio;
    private MyListbox productoServicioList;
    private MyListbox prodClaseServicioList;
    private MyListbox prodFormaPagoList;
    private MyListbox prodMarcaList;
    private MyListbox prodMercadoList;
    private MyListbox prodPuntoVentaList;
    private MyListbox prodRutaList;
    private MyListbox prodTipoptovtaList;
    private MyListbox prodVigenciaList;
    private List<ProdClaseServicio> lsProdClaseServicio;
    private List<ProdFormaPago> lsProdFormaPago;
    private List<ProdMarca> lsProdMarca;
    private List<ProdMercado> lsProdMercado;
    private List<ProdPuntoVenta> lsProdPuntoVenta;
    private List<ProdPrecio> lsProdPrecio;
    private List<ProdRuta> lsProdRuta;
    private List<ProdTipoptovta> lsProdTipoptovta;
    private List<ProdVigencia> lsProdVigencia;
    private List<Marca> lsMarca;
    private static Logger log = Logger.getLogger(EditarProductoServicioController.class);
    private boolean salvo = false;
    private Button btnApagar;
    private Radio rdTipoPro;
    private Textbox txtDescripcion;
    private Combobox cmbMarca;

    @Override
    public void doAfterCompose(Component comp) throws Exception {

        productoServicio = (ProductoServicio) Executions.getCurrent().getArg().get("productoServicio");
        productoServicioList = (MyListbox) Executions.getCurrent().getArg().get("productoServicioList");

        lsMarca = marcaService.buscarMarcaPorEmpresa(UsuarioLogado.getUsuarioLogado().getEmpresa());

        super.doAfterCompose(comp);

        //Clase Servicio
        prodClaseServicioList.setItemRenderer(new RenderCyberViajeProdClaseServicio());
        lsProdClaseServicio = new ArrayList<ProdClaseServicio>();
        productoServicio.setProdClaseServicioList(lsProdClaseServicio);

        //FormaPago
        prodFormaPagoList.setItemRenderer(new RenderCyberViajeProdFormaPago());
        lsProdFormaPago = new ArrayList<ProdFormaPago>();
        productoServicio.setProdFormaPagoList(lsProdFormaPago);

        //Marca
        prodMarcaList.setItemRenderer(new RenderCyberViajeProdMarca());
        lsProdMarca = new ArrayList<ProdMarca>();
        productoServicio.setProdMarcaList(lsProdMarca);
        prodMarcaList.addEventListener("onDoubleClick", new EventListener() {

            @Override
            public void onEvent(Event event) throws Exception {
                ProdMarca prodMarca = (ProdMarca) prodMarcaList.getSelected();
                verProdMarca(prodMarca);
            }
        });

        //Mercado
        prodMercadoList.setItemRenderer(new RenderCyberViajeProdMercado());
        lsProdMercado = new ArrayList<ProdMercado>();
        productoServicio.setProdMercadoList(lsProdMercado);

        //Punto Venta
        prodPuntoVentaList.setItemRenderer(new RenderCyberViajeProdPuntoVenta());
        lsProdPuntoVenta = new ArrayList<ProdPuntoVenta>();
        productoServicio.setProdPuntoVentaList(lsProdPuntoVenta);

        //Ruta
        prodRutaList.setItemRenderer(new RenderCyberViajeProdRuta());
        lsProdRuta = new ArrayList<ProdRuta>();
        productoServicio.setProdRutaList(lsProdRuta);

        //Tipo Ponto de Venda
        prodTipoptovtaList.setItemRenderer(new RenderCyberViajeProdTipoptovta());
        lsProdTipoptovta = new ArrayList<ProdTipoptovta>();
        productoServicio.setProdTipoptovtaList(lsProdTipoptovta);

        //Vigencia
        prodVigenciaList.setItemRenderer(new RenderCyberViajeProdVigencia());
        lsProdVigencia = new ArrayList<ProdVigencia>();
        productoServicio.setProdVigenciaList(lsProdVigencia);
        prodVigenciaList.addEventListener("onDoubleClick", new EventListener() {

            @Override
            public void onEvent(Event event) throws Exception {
                ProdVigencia prodVigencia = (ProdVigencia) prodVigenciaList.getSelected();
                verProdVigencia(prodVigencia);
            }
        });


        if (productoServicio.getProductoservicioId() != null) {
            productoServicio = productoServicioService.obtenerID(productoServicio.getProductoservicioId());

            lsProdClaseServicio = productoServicio.getProdClaseServicioList();
            prodClaseServicioList.setData(lsProdClaseServicio);

            lsProdFormaPago = productoServicio.getProdFormaPagoList();
            prodFormaPagoList.setData(lsProdFormaPago);

            lsProdMarca = productoServicio.getProdMarcaList();
            prodMarcaList.setData(lsProdMarca);

            lsProdMercado = productoServicio.getProdMercadoList();
            prodMercadoList.setData(lsProdMercado);

            lsProdPuntoVenta = productoServicio.getProdPuntoVentaList();
            prodPuntoVentaList.setData(lsProdPuntoVenta);

            lsProdRuta = productoServicio.getProdRutaList();
            prodRutaList.setData(lsProdRuta);

            lsProdTipoptovta = productoServicio.getProdTipoptovtaList();
            prodTipoptovtaList.setData(lsProdTipoptovta);

            lsProdVigencia = productoServicio.getProdVigenciaList();
            prodVigenciaList.setData(lsProdVigencia);

            if (productoServicio.getIndtipo().equals("P")) {
                rdTipoPro.setChecked(true);
            }

            salvo = true;
        }

        if (productoServicio.getProductoservicioId() == null) {
            btnApagar.setVisible(Boolean.FALSE);
            productoServicio.setIndtipo("S");
        }
    }

    public void onClick$btnSalvar(Event ev) throws InterruptedException {
        txtDescripcion.getValue();
        if (prodFormaPagoList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdFormaPagoController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);
        } else if (prodTipoptovtaList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdTipoptovtaController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);
        } else if (prodPuntoVentaList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdPuntoVentaController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);
        } else if (prodVigenciaList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdVigenciaController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);

        } else if (prodRutaList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdRutaController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);
        } else if (prodMercadoList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdMercadoController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);

        } else if (prodClaseServicioList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdClaseServicioController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);

        } else if (prodMarcaList.getModel().getSize() == 0) {
            Messagebox.show(
                    Labels.getLabel("editarProdMarcaController.MSG.vazio"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.INFORMATION);
        } else {
            try {
                productoServicio.setProdClaseServicioList(lsProdClaseServicio);
                productoServicio.setProdFormaPagoList(lsProdFormaPago);
                productoServicio.setProdMarcaList(lsProdMarca);
                productoServicio.setProdMercadoList(lsProdMercado);
                productoServicio.setProdPuntoVentaList(lsProdPuntoVenta);
                productoServicio.setProdRutaList(lsProdRuta);
                productoServicio.setProdTipoptovtaList(lsProdTipoptovta);
                productoServicio.setProdVigenciaList(lsProdVigencia);

                List<ProductoServicio> lsPs = productoServicioService.obtener(productoServicio);
                boolean podeSalvar = false;

                if (lsPs.isEmpty()) {
                    podeSalvar = true;
                } else {
                    for (ProductoServicio pser : lsPs) {
                        if (pser.getProductoservicioId().equals(productoServicio.getProductoservicioId())) {
                            podeSalvar = true;
                        } else {
                            podeSalvar = false;
                        }
                    }
                }

                if (podeSalvar) {

                    if (productoServicio.getProductoservicioId() == null) {
                        productoServicioService.suscribir(productoServicio);
                        productoServicioList.addItem(productoServicio);
                    } else {
                        productoServicioService.actualizacion(productoServicio);
                        productoServicioList.updateItem(productoServicio);
                    }

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

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

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

    public void onClick$btnFechar(Event ev) {
        puedeBorrar();
        closeWindow();
    }

    private void puedeBorrar() {
        if (!salvo) {
            if (productoServicio.getProductoservicioId() != null) {
                productoServicio = productoServicioService.obtenerID(productoServicio.getProductoservicioId());
                productoServicioService.borrarFisico(productoServicio);
            }
        }
    }

    public void onClose$winEditarProductoServicio(Event ev) {
        puedeBorrar();
        closeWindow();
    }

    public void onClick$btnApagar(Event ev) {
        try {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProductoServicioController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);

            if (resp == Messagebox.YES) {
                productoServicioService.borrar(productoServicio);
                Messagebox.show(
                        Labels.getLabel("editarProductoServicioController.MSG.borrarOK"),
                        Labels.getLabel("editarProductoServicioController.window.title"),
                        Messagebox.OK, Messagebox.INFORMATION);

                productoServicioList.removeItem(productoServicio);

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

    private void verProdClaseServicio(ProdClaseServicio prodClaseServicio) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("lsProdClaseServicio", lsProdClaseServicio);
        args.put("prodClaseServicio", prodClaseServicio);
        args.put("prodClaseServicioList", prodClaseServicioList);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdClaseServicio.zul",
                Labels.getLabel("editarProductoServicioController.windowProdClaseServicio.title"), args, MODAL);
    }

    public void onClick$btnNovoProdClaseServicio(Event ev) {
        ProdClaseServicio pcs = new ProdClaseServicio();
        pcs.setProductoServicio(productoServicio);
        verProdClaseServicio(pcs);
    }

    public void onClick$btnApagarProdClaseServicio(Event ev) throws Exception {
        ProdClaseServicio pClaseServicio = (ProdClaseServicio) prodClaseServicioList.getSelected();
        if (pClaseServicio != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdClaseServicioController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdClaseServicioController.winEditarProdClaseServicio.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdClaseServicio.remove(pClaseServicio);

                pClaseServicio.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pClaseServicio.setFecmodif(Calendar.getInstance().getTime());
                pClaseServicio.setActivo(Boolean.FALSE);

                lsProdClaseServicio.add(pClaseServicio);
                prodClaseServicioList.removeItem(pClaseServicio);
                prodClaseServicioList.clearSelection();
            }
        } else {
            Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    private void verProdFormaPago(ProdFormaPago prodFormaPago) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("prodFormaPago", prodFormaPago);
        args.put("prodFormaPagoList", prodFormaPagoList);
        args.put("lsProdFormaPago", lsProdFormaPago);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdFormaPago.zul",
                Labels.getLabel("editarProductoServicioController.windowProdFormaPago.title"), args, MODAL);
    }

    public void onClick$btnNovoProdFormaPago(Event ev) {
        ProdFormaPago pForma = new ProdFormaPago();
        pForma.setProductoServicio(productoServicio);
        verProdFormaPago(pForma);
    }


    public void onClick$btnApagarProdFormaPago(Event ev) throws Exception {
        ProdFormaPago pFormaPago = (ProdFormaPago) prodFormaPagoList.getSelected();
        if (pFormaPago != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdFormaPagoController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdFormaPagoController.winEditarProdFormaPago.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdFormaPago.remove(pFormaPago);

                pFormaPago.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pFormaPago.setFecmodif(Calendar.getInstance().getTime());
                pFormaPago.setActivo(Boolean.FALSE);

                lsProdFormaPago.add(pFormaPago);
                prodFormaPagoList.removeItem(pFormaPago);
                prodFormaPagoList.clearSelection();
            }
        } else {
            Messagebox.show(
                    Labels.getLabel("editarProductoServicioController.MSG.selectItem"),
                    Labels.getLabel("editarProductoServicioController.window.title"),
                    Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    private void verProdMarca(ProdMarca prodMarca) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("lsProdMarca", lsProdMarca);
        args.put("prodMarca", prodMarca);
        args.put("prodMarcaList", prodMarcaList);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdMarca.zul",
                Labels.getLabel("editarProductoServicioController.windowProdMarca.title"), args, MODAL);

    }

    public void onClick$btnNovoProdMarca(Event ev) {
        ProdMarca pMarca = new ProdMarca();
        pMarca.setProductoServicio(productoServicio);
        verProdMarca(pMarca);
    }

    public void onClick$btnModificarProdMarca(Event ev) {

        ProdMarca prodMarca = (ProdMarca) prodMarcaList.getSelected();

        if (prodMarca != null) {
            verProdMarca(prodMarca);
        } else {
            try {
                Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
            } catch (InterruptedException ex) {
                java.util.logging.Logger.getLogger(EditarProductoServicioController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public void onClick$btnApagarProdMarca(Event ev) throws Exception {
        ProdMarca pMarca = (ProdMarca) prodMarcaList.getSelected();
        if (pMarca != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdMarcaController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdMarcaController.winEditarProdMarca.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdMarca.remove(pMarca);

                pMarca.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pMarca.setFecmodif(Calendar.getInstance().getTime());
                pMarca.setActivo(Boolean.FALSE);

                lsProdMarca.add(pMarca);
                prodMarcaList.removeItem(pMarca);
                prodMarcaList.clearSelection();
                
                //Como a marca já foi removida da tela, tenho q remover tmb os precios da mesma.
                //Se o usuario voltar a adicionar a marca, deve voltar a adicionar os preços
                prodPrecioService.borrar(pMarca.getMarca());
            }
        } else {
            Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    private void verProdMercado(ProdMercado prodMercado) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("lsProdMercado", lsProdMercado);
        args.put("prodMercado", prodMercado);
        args.put("prodMercadoList", prodMercadoList);
        args.put("productoServicio", productoServicio);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdMercado.zul",
                Labels.getLabel("editarProductoServicioController.windowProdMercado.title"),
                args, MODAL);
    }

    public void onClick$btnNovoProdMercado(Event ev) {
        ProdMercado pMercado = new ProdMercado();
        verProdMercado(pMercado);
    }

    public void onClick$btnApagarProdMercado(Event ev) throws Exception {
        ProdMercado pMercado = (ProdMercado) prodMercadoList.getSelected();
        if (pMercado != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdMercadoController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdMercadoController.winEditarProdMercado.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdMercado.remove(pMercado);

                pMercado.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pMercado.setFecmodif(Calendar.getInstance().getTime());
                pMercado.setActivo(Boolean.FALSE);

                lsProdMercado.add(pMercado);
                prodMercadoList.removeItem(pMercado);
                prodMercadoList.clearSelection();
            }
        } else {
            Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    private void verProdPuntoVenta(ProdPuntoVenta prodPuntoVenta) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("lsProdPuntoVenta", lsProdPuntoVenta);
        args.put("prodPuntoVenta", prodPuntoVenta);
        args.put("prodPuntoVentaList", prodPuntoVentaList);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdPuntoVenta.zul",
                Labels.getLabel("editarProductoServicioController.windowProdPuntoVenta.title"), args, MODAL);

    }

    public void onClick$btnNovoProdPuntoVenta(Event ev) {
        ProdPuntoVenta pPuntoVenta = new ProdPuntoVenta();
        pPuntoVenta.setProductoServicio(productoServicio);
        verProdPuntoVenta(pPuntoVenta);
    }

    public void onClick$btnApagarProdPuntoVenta(Event ev) throws Exception {
        ProdPuntoVenta pPuntoVenta = (ProdPuntoVenta) prodPuntoVentaList.getSelected();
        if (pPuntoVenta != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdPuntoVentaController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdPuntoVentaController.winEditarProdPuntoVenta.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdPuntoVenta.remove(pPuntoVenta);

                pPuntoVenta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pPuntoVenta.setFecmodif(Calendar.getInstance().getTime());
                pPuntoVenta.setActivo(Boolean.FALSE);

                lsProdPuntoVenta.add(pPuntoVenta);
                prodPuntoVentaList.removeItem(pPuntoVenta);
                prodPuntoVentaList.clearSelection();
            }
        } else {
            Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    private void verProdRuta(ProdRuta prodRuta) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("prodRuta", prodRuta);
        args.put("lsProdRuta", lsProdRuta);
        args.put("prodRutaList", prodRutaList);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdRuta.zul",
                Labels.getLabel("editarProductoServicioController.windowProdRuta.title"), args, MODAL);

    }

    public void onClick$btnNovoProdRuta(Event ev) {
        ProdRuta pRuta = new ProdRuta();
        pRuta.setProductoServicio(productoServicio);
        verProdRuta(pRuta);
    }

    public void onClick$btnApagarProdRuta(Event ev) throws Exception {
        ProdRuta pRuta = (ProdRuta) prodRutaList.getSelected();
        if (pRuta != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdRutaController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdRutaController.winEditarProdRuta.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdRuta.remove(pRuta);

                pRuta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pRuta.setFecmodif(Calendar.getInstance().getTime());
                pRuta.setActivo(Boolean.FALSE);

                lsProdRuta.add(pRuta);
                prodRutaList.removeItem(pRuta);
                prodRutaList.clearSelection();
            }
        } else {
            Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    private void verProdTipoptovta(ProdTipoptovta prodTipoptovta) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("lsProdTipoptovta", lsProdTipoptovta);
        args.put("prodTipoptovta", prodTipoptovta);
        args.put("prodTipoptovtaList", prodTipoptovtaList);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdTipoptovta.zul",
                Labels.getLabel("editarProductoServicioController.windowProdTipoptovta.title"), args, MODAL);

    }

    public void onClick$btnNovoProdTipoptovta(Event ev) {
        ProdTipoptovta pTipo = new ProdTipoptovta();
        pTipo.setProductoServicio(productoServicio);
        verProdTipoptovta(pTipo);
    }

    public void onClick$btnApagarProdTipoptovta(Event ev) throws Exception {
        ProdTipoptovta pTipoptovta = (ProdTipoptovta) prodTipoptovtaList.getSelected();
        if (pTipoptovta != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdTipoptovtaController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdTipoptovtaController.winEditarProdTipoptovta.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdTipoptovta.remove(pTipoptovta);

                pTipoptovta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pTipoptovta.setFecmodif(Calendar.getInstance().getTime());
                pTipoptovta.setActivo(Boolean.FALSE);

                lsProdTipoptovta.add(pTipoptovta);
                prodTipoptovtaList.removeItem(pTipoptovta);
                prodTipoptovtaList.clearSelection();
            }
        } else {
            Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    private void verProdVigencia(ProdVigencia prodVigencia) {
        if (productoServicio.getProductoservicioId() == null) {
            productoServicioService.suscribir(productoServicio);
        }

        Map args = new HashMap();
        args.put("lsProdVigencia", lsProdVigencia);
        args.put("prodVigencia", prodVigencia);
        args.put("prodVigenciaList", prodVigenciaList);

        openWindow("/gui/configuraciones_comerciales/cyberviaje/editarProdVigencia.zul",
                Labels.getLabel("editarProductoServicioController.windowProdVigencia.title"), args, MODAL);

    }

    public void onClick$btnNovoProdVigencia(Event ev) {
        ProdVigencia pVigencia = new ProdVigencia();
        pVigencia.setProductoServicio(productoServicio);
        verProdVigencia(pVigencia);
    }

    public void onClick$btnModificarProdVigencia(Event ev) {

        ProdVigencia prodVigencia = (ProdVigencia) prodVigenciaList.getSelected();

        if (prodVigencia != null) {
            verProdVigencia(prodVigencia);
        } else {
            try {
                Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
            } catch (InterruptedException ex) {
                java.util.logging.Logger.getLogger(EditarProductoServicioController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public void onClick$btnApagarProdVigencia(Event ev) throws Exception {
        ProdVigencia pVigencia = (ProdVigencia) prodVigenciaList.getSelected();
        if (pVigencia != null) {
            int resp = Messagebox.show(
                    Labels.getLabel("editarProdVigenciaController.MSG.borrarPergunta"),
                    Labels.getLabel("editarProdVigenciaController.winEditarProdVigencia.title"),
                    Messagebox.YES | Messagebox.NO, Messagebox.QUESTION);
            if (resp == Messagebox.YES) {
                lsProdVigencia.remove(pVigencia);

                pVigencia.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
                pVigencia.setFecmodif(Calendar.getInstance().getTime());
                pVigencia.setActivo(Boolean.FALSE);

                lsProdVigencia.add(pVigencia);
                prodVigenciaList.removeItem(pVigencia);
                prodVigenciaList.clearSelection();
            }
        } else {
            Messagebox.show(Labels.getLabel("editarProductoServicioController.MSG.selectItem"), Labels.getLabel("editarProductoServicioController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);
        }
    }

    public void onClick$rdTipoSer(Event ev) {
        productoServicio.setIndtipo("S");
    }

    public void onClick$rdTipoPro(Event ev) {
        productoServicio.setIndtipo("P");
    }

    public List<ProdClaseServicio> getLsProdClaseServicio() {
        return lsProdClaseServicio;
    }

    public void setLsProdClaseServicio(List<ProdClaseServicio> lsProdClaseServicio) {
        this.lsProdClaseServicio = lsProdClaseServicio;
    }

    public List<ProdFormaPago> getLsProdFormaPago() {
        return lsProdFormaPago;
    }

    public void setLsProdFormaPago(List<ProdFormaPago> lsProdFormaPago) {
        this.lsProdFormaPago = lsProdFormaPago;
    }

    public List<ProdMarca> getLsProdMarca() {
        return lsProdMarca;
    }

    public void setLsProdMarca(List<ProdMarca> lsProdMarca) {
        this.lsProdMarca = lsProdMarca;
    }

    public List<ProdMercado> getLsProdMercado() {
        return lsProdMercado;
    }

    public void setLsProdMercado(List<ProdMercado> lsProdMercado) {
        this.lsProdMercado = lsProdMercado;
    }

    public List<ProdPuntoVenta> getLsProdPuntoVenta() {
        return lsProdPuntoVenta;
    }

    public void setLsProdPuntoVenta(List<ProdPuntoVenta> lsProdPuntoVenta) {
        this.lsProdPuntoVenta = lsProdPuntoVenta;
    }

    public List<ProdRuta> getLsProdRuta() {
        return lsProdRuta;
    }

    public void setLsProdRuta(List<ProdRuta> lsProdRuta) {
        this.lsProdRuta = lsProdRuta;
    }

    public List<ProdTipoptovta> getLsProdTipoptovta() {
        return lsProdTipoptovta;
    }

    public void setLsProdTipoptovta(List<ProdTipoptovta> lsProdTipoptovta) {
        this.lsProdTipoptovta = lsProdTipoptovta;
    }

    public List<ProdVigencia> getLsProdVigencia() {
        return lsProdVigencia;
    }

    public void setLsProdVigencia(List<ProdVigencia> lsProdVigencia) {
        this.lsProdVigencia = lsProdVigencia;
    }

    public MyListbox getProdClaseServicioList() {
        return prodClaseServicioList;
    }

    public void setProdClaseServicioList(MyListbox prodClaseServicioList) {
        this.prodClaseServicioList = prodClaseServicioList;
    }

    public MyListbox getProdFormaPagoList() {
        return prodFormaPagoList;
    }

    public void setProdFormaPagoList(MyListbox prodFormaPagoList) {
        this.prodFormaPagoList = prodFormaPagoList;
    }

    public MyListbox getProdMarcaList() {
        return prodMarcaList;
    }

    public void setProdMarcaList(MyListbox prodMarcaList) {
        this.prodMarcaList = prodMarcaList;
    }

    public MyListbox getProdMercadoList() {
        return prodMercadoList;
    }

    public void setProdMercadoList(MyListbox prodMercadoList) {
        this.prodMercadoList = prodMercadoList;
    }

    public MyListbox getProdPuntoVentaList() {
        return prodPuntoVentaList;
    }

    public void setProdPuntoVentaList(MyListbox prodPuntoVentaList) {
        this.prodPuntoVentaList = prodPuntoVentaList;
    }

    public MyListbox getProdRutaList() {
        return prodRutaList;
    }

    public void setProdRutaList(MyListbox prodRutaList) {
        this.prodRutaList = prodRutaList;
    }

    public MyListbox getProdTipoptovtaList() {
        return prodTipoptovtaList;
    }

    public void setProdTipoptovtaList(MyListbox prodTipoptovtaList) {
        this.prodTipoptovtaList = prodTipoptovtaList;
    }

    public MyListbox getProdVigenciaList() {
        return prodVigenciaList;
    }

    public void setProdVigenciaList(MyListbox prodVigenciaList) {
        this.prodVigenciaList = prodVigenciaList;
    }

    public ProductoServicio getProductoServicio() {
        return productoServicio;
    }

    public void setProductoServicio(ProductoServicio productoServicio) {
        this.productoServicio = productoServicio;
    }

    public MyListbox getProductoServicioList() {
        return productoServicioList;
    }

    public void setProductoServicioList(MyListbox productoServicioList) {
        this.productoServicioList = productoServicioList;
    }

    public ProductoServicioService getProductoServicioService() {
        return productoServicioService;
    }

    public void setProductoServicioService(ProductoServicioService productoServicioService) {
        this.productoServicioService = productoServicioService;
    }

    public boolean isSalvo() {
        return salvo;
    }

    public void setSalvo(boolean salvo) {
        this.salvo = salvo;
    }

    public List<Marca> getLsMarca() {
        return lsMarca;
    }

    public void setLsMarca(List<Marca> lsMarca) {
        this.lsMarca = lsMarca;
    }

    public List<ProdPrecio> getLsProdPrecio() {
        return lsProdPrecio;
    }

    public void setLsProdPrecio(List<ProdPrecio> lsProdPrecio) {
        this.lsProdPrecio = lsProdPrecio;
    }

    public MarcaService getMarcaService() {
        return marcaService;
    }

    public void setMarcaService(MarcaService marcaService) {
        this.marcaService = marcaService;
    }

   
}
