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

import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.FormaPago;
import com.rjconsultores.ventaboletos.entidad.FormaPagoDet;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.service.EmpresaService;
import com.rjconsultores.ventaboletos.service.FormaPagoDetService;
import com.rjconsultores.ventaboletos.service.FormaPagoService;
import com.rjconsultores.ventaboletos.service.PuntoVentaService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
import java.util.Calendar;
import java.util.List;
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.zul.Button;
import org.zkoss.zul.Combobox;

/**
 *
 * @author Administrador
 */
@Controller("editarConfiguracionFormaPagoController")
@Scope("prototype")
public class EditarConfiguracionFormaPagoController extends MyGenericForwardComposer {

    @Autowired
    private FormaPagoDetService formaPagoDetService;
    @Autowired
    private EmpresaService empresaService;
    @Autowired
    private PuntoVentaService puntoVentaService;
    @Autowired
    private FormaPagoService formaPagoService;
    private MyListbox configFormaPagoList;
    private FormaPagoDet formaPagoDet;
    private List<Empresa> lsEmpresas;
    private List<PuntoVenta> lsPuntosVentas;
    private List<FormaPago> lsFormaPago;
    private Combobox cmbFormaPago;
    private Combobox cmbPuntoVenta;
    private Combobox cmbRestriccionFormaPago;
    private Button btnApagar;
    private static Logger log = Logger.getLogger(EditarConfiguracionFormaPagoController.class);

    public Button getBtnApagar() {
        return btnApagar;
    }

    public void setBtnApagar(Button btnApagar) {
        this.btnApagar = btnApagar;
    }

    public FormaPagoDet getFormaPagoDet() {
        return formaPagoDet;
    }

    public void setFormaPagoDet(FormaPagoDet formaPagoDet) {
        this.formaPagoDet = formaPagoDet;
    }

    public List<Empresa> getLsEmpresas() {
        return lsEmpresas;
    }

    public void setLsEmpresas(List<Empresa> lsEmpresas) {
        this.lsEmpresas = lsEmpresas;
    }

    public List<PuntoVenta> getLsPuntosVentas() {
        return lsPuntosVentas;
    }

    public void setLsPuntosVentas(List<PuntoVenta> lsPuntosVentas) {
        this.lsPuntosVentas = lsPuntosVentas;
    }

    public List<FormaPago> getLsFormaPago() {
        return lsFormaPago;
    }

    public void setLsFormaPago(List<FormaPago> lsFormaPago) {
        this.lsFormaPago = lsFormaPago;
    }

    public Combobox getCmbFormaPago() {
        return cmbFormaPago;
    }

    public void setCmbFormaPago(Combobox cmbFormaPago) {
        this.cmbFormaPago = cmbFormaPago;
    }

    public Combobox getCmbPuntoVenta() {
        return cmbPuntoVenta;
    }

    public void setCmbPuntoVenta(Combobox cmbPuntoVenta) {
        this.cmbPuntoVenta = cmbPuntoVenta;
    }

    public Combobox getCmbRestriccionFormaPago() {
        return cmbRestriccionFormaPago;
    }

    public void setCmbRestriccionFormaPago(Combobox cmbRestriccionFormaPago) {
        this.cmbRestriccionFormaPago = cmbRestriccionFormaPago;
    }

    @Override
    public void doAfterCompose(Component comp) throws Exception {
        lsEmpresas =  UsuarioLogado.getUsuarioLogado().getEmpresa();
        lsPuntosVentas = puntoVentaService.obtenerTodos();
        lsFormaPago = formaPagoService.obtenerTodos();

        super.doAfterCompose(comp);

        formaPagoDet = (FormaPagoDet) Executions.getCurrent().getArg().get("formaPagoDet");
        configFormaPagoList = (MyListbox) Executions.getCurrent().getArg().get("configFormaPagoList");

        if (formaPagoDet.getFormapagodetId() == null) {
            btnApagar.setVisible(Boolean.FALSE);
        }

        cmbFormaPago.focus();
    }

    public void onClick$btnSalvar(Event ev) {
        cmbFormaPago.getSelectedItem().getValue();
        cmbPuntoVenta.getSelectedItem().getValue();
        cmbRestriccionFormaPago.getSelectedItem().getValue();

        try {
            formaPagoDet.setActivo(Boolean.TRUE);
            formaPagoDet.setFecmodif(Calendar.getInstance().getTime());
            formaPagoDet.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());

            if (formaPagoDet.getFormapagodetId() == null) {
                formaPagoDetService.suscribir(formaPagoDet);
                configFormaPagoList.addItem(formaPagoDet);
            } else {
                formaPagoDetService.actualizacion(formaPagoDet);
                configFormaPagoList.updateItem(formaPagoDet);
            }

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

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

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

            if (resp == Messagebox.YES) {
                formaPagoDetService.borrar(formaPagoDet);

                Messagebox.show(
                        Labels.getLabel("editarConfiguracionFormaPagoController.MSG.borrarOK"),
                        Labels.getLabel("editarConfiguracionFormaPagoController.window.title"),
                        Messagebox.OK, Messagebox.INFORMATION);

                configFormaPagoList.removeItem(formaPagoDet);

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