/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cosmodas.pedidos;

import com.cosmodas.EntCosmos.*;
import com.cosmodas.FacadeCosmos.*;

import java.io.IOException;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.*;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import org.primefaces.PrimeFaces;

/**
 * @author obper
 */
@ManagedBean
@ViewScoped
public class bTomaPedido implements Serializable {

    @EJB
    private VprecioProgramaFFacadeLocal vppffl;
    @EJB
    private DatosCosultoresCompletosFacadeLocal dccfl;
    @EJB
    private RutaRepartoFacadeLocal rrfl;
    @EJB
    private PedidosFacadeLocal pedfl;
    @EJB
    private DetallePedidosFacadeLocal depedfl;
    @EJB
    private ProcesoDePedidosFacadeLocal propeddfl;
    @EJB
    private GeneralesFacadeLocal generalesDao;
    @EJB
    private SucursalesFacadeLocal sfl;
    @EJB
    private ConsultoresDatosRepartoDaoLocal cdrfl;

    private boolean reparto;
    private boolean repartos;
    private boolean credito;
    private boolean nuevoPedido;
    private Integer cantidad;
    private Date fechaEntregas;
    private String codigoCliente;
    private String nombreCliente;
    private String territorio;
    private String zonaReparto;
    private String observacionesZonaReparto;
    private String observaciones;
    private String salaEmite;
    private String salaFactura;
    private String numeroPedido;
    private String productoCodigo;
    private String nombreProducto;
    private VprecioProgramaF oferta;
    private String usuarioTerritorio;
    private String sucursale;
    private String usuarioCodigo;
    private CuerpoPedido pedido;
    private List<VprecioProgramaF> ofertas;
    private List<VprecioProgramaF> productos;
    private List<Sucursales> sucursales;
    private VprecioProgramaF producto;
    private String programaCodigo;
    private String correoEnviar;
    private String datosConsultor;
    private String saldosCosultor;
    private String codigoRuta;
    private String precio;
    private String cantidadString;
    private List<CuerpoPedido> detallePedido;
    private boolean disableDeTomaProdut;
    private boolean validaListaOfertas;
    private List<RutaReparto> rutas;
    private String sumaTotalSinDescuento;
    private String sumaTotalConDescuento;
    private String observacion;
    private DatosCosultoresCompletos client;
    private ExternalContext exc;
    private boolean guardado = true;
    private int tipoReparto;
    private boolean liberarIni;


    @Inject
    private Sucursales sucursal, sucursalDespacha;
    @Inject
    private WcUsuarios usuario;
    @Inject
    private ConsultoresDatosReparto datosReparto;

    //---------------------------------------------


    public boolean isLiberarIni() {
        return liberarIni;
    }

    public void setLiberarIni(boolean liberarIni) {
        this.liberarIni = liberarIni;
    }

    public ConsultoresDatosReparto getDatosReparto() {
        return datosReparto;
    }

    public void setDatosReparto(ConsultoresDatosReparto datosReparto) {
        this.datosReparto = datosReparto;
    }

    public int getTipoReparto() {
        return tipoReparto;
    }

    public void setTipoReparto(int tipoReparto) {
        this.tipoReparto = tipoReparto;
    }

    public boolean isRepartos() {
        return repartos;
    }

    public void setRepartos(boolean repartos) {
        this.repartos = repartos;
    }

    public Sucursales getSucursalDespacha() {
        return sucursalDespacha;
    }

    public void setSucursalDespacha(Sucursales sucursalDespacha) {
        this.sucursalDespacha = sucursalDespacha;
    }

    public List<Sucursales> getSucursales() {
        return sucursales;
    }

    public void setSucursales(List<Sucursales> sucursales) {
        this.sucursales = sucursales;
    }

    public Date getFechaEntregas() {
        return fechaEntregas;
    }

    public void setFechaEntregas(Date fechaEntregas) {
        this.fechaEntregas = fechaEntregas;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public String getSumaTotalSinDescuento() {
        TotalSinDescuentos();
        return sumaTotalSinDescuento;
    }

    public void setSumaTotalSinDescuento(String sumaTotalSinDescuento) {
        this.sumaTotalSinDescuento = sumaTotalSinDescuento;
    }

    public String getSumaTotalConDescuento() {
        TotalConDescuentos();
        return sumaTotalConDescuento;
    }

    public void setSumaTotalConDescuento(String sumaTotalConDescuento) {
        this.sumaTotalConDescuento = sumaTotalConDescuento;
    }

    public CuerpoPedido getPedido() {
        return pedido;
    }

    public void setPedido(CuerpoPedido pedido) {
        this.pedido = pedido;
    }

    public List<CuerpoPedido> getDetallePedido() {
        return detallePedido;
    }

    public void setDetallePedido(List<CuerpoPedido> detallePedido) {
        this.detallePedido = detallePedido;
    }

    public List<VprecioProgramaF> getProductos() {
        return productos;
    }

    public void setProductos(List<VprecioProgramaF> productos) {
        this.productos = productos;
    }

    public String getProgramaCodigo() {
        return programaCodigo;
    }

    public void setProgramaCodigo(String programaCodigo) {
        this.programaCodigo = programaCodigo;
    }

    public boolean getReparto() {
        return reparto;
    }

    public void setReparto(boolean reparto) {
        this.reparto = reparto;
    }

    public String getCodigoCliente() {
        return codigoCliente;
    }

    public void setCodigoCliente(String codigoCliente) {
        this.codigoCliente = codigoCliente;
    }

    public String getNombreCliente() {
        return nombreCliente;
    }

    public void setNombreCliente(String nombreCliente) {
        this.nombreCliente = nombreCliente;
    }

    public String getTerritorio() {
        return territorio;
    }

    public void setTerritorio(String territorio) {
        this.territorio = territorio;
    }

    public String getZonaReparto() {
        return zonaReparto;
    }

    public void setZonaReparto(String zonaReparto) {
        this.zonaReparto = zonaReparto;
    }

    public String getObservacionesZonaReparto() {
        return observacionesZonaReparto;
    }

    public void setObservacionesZonaReparto(String observacionesZonaReparto) {
        this.observacionesZonaReparto = observacionesZonaReparto;
    }

    public String getObservaciones() {
        return observaciones;
    }

    public void setObservaciones(String observaciones) {
        this.observaciones = observaciones;
    }

    public String getSalaEmite() {
        return salaEmite;
    }

    public void setSalaEmite(String salaEmite) {
        this.salaEmite = salaEmite;
    }

    public String getSalaFactura() {
        return salaFactura;
    }

    public void setSalaFactura(String salaFactura) {
        this.salaFactura = salaFactura;
    }

    public String getNumeroPedido() {
        return numeroPedido;
    }

    public void setNumeroPedido(String numeroPedido) {
        this.numeroPedido = numeroPedido;
    }

    public String getProductoCodigo() {
        return productoCodigo;
    }

    public void setProductoCodigo(String productoCodigo) {
        this.productoCodigo = productoCodigo;
    }

    public String getNombreProducto() {
        return nombreProducto;
    }

    public void setNombreProducto(String nombreProducto) {
        this.nombreProducto = nombreProducto;
    }

    public VprecioProgramaF getOferta() {
        return oferta;
    }

    public void setOferta(VprecioProgramaF oferta) {
        this.oferta = oferta;
    }

    public Integer getCantidad() {
        return cantidad;
    }

    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    public boolean isCredito() {
        return credito;
    }

    public void setCredito(boolean credito) {
        this.credito = credito;
    }

    public boolean isNuevoPedido() {
        return nuevoPedido;
    }

    public void setNuevoPedido(boolean nuevoPedido) {
        this.nuevoPedido = nuevoPedido;
    }

    public String getCorreoEnviar() {
        return correoEnviar;
    }

    public void setCorreoEnviar(String correoEnviar) {
        this.correoEnviar = correoEnviar;
    }

    public String getDatosConsultor() {
        return datosConsultor;
    }

    public void setDatosConsultor(String datosConsultor) {
        this.datosConsultor = datosConsultor;
    }

    public String getSaldosCosultor() {
        return saldosCosultor;
    }

    public void setSaldosCosultor(String saldosCosultor) {
        this.saldosCosultor = saldosCosultor;
    }

    public List<RutaReparto> getRutas() {
        return rutas;
    }

    public void setRutas(List<RutaReparto> rutas) {
        this.rutas = rutas;
    }

    public String getCodigoRuta() {
        return codigoRuta;
    }

    public void setCodigoRuta(String codigoRuta) {
        this.codigoRuta = codigoRuta;
    }

    public List<VprecioProgramaF> getOfertas() {
        return ofertas;
    }

    public void setOfertas(List<VprecioProgramaF> ofertas) {
        this.ofertas = ofertas;
    }

    public VprecioProgramaF getProducto() {
        return producto;
    }

    public void setProducto(VprecioProgramaF producto) {
        this.producto = producto;
    }

    public String getPrecio() {
        return precio;
    }

    public void setPrecio(String precio) {
        this.precio = precio;
    }

    public boolean isValidaListaOfertas() {
        return validaListaOfertas;
    }

    public void setValidaListaOfertas(boolean validaListaOfertas) {
        this.validaListaOfertas = validaListaOfertas;
    }

    public boolean isDisableDeTomaProdut() {
        return disableDeTomaProdut;
    }

    public void setDisableDeTomaProdut(boolean disableDeTomaProdut) {
        this.disableDeTomaProdut = disableDeTomaProdut;
    }

    public String getCantidadString() {
        return cantidadString;
    }

    public void setCantidadString(String cantidadString) {
        if (cantidadString.isEmpty()) {
        } else {
            setCantidad(Integer.parseInt(cantidadString));
        }
        this.cantidadString = cantidadString;
    }

    @PostConstruct
    public void init() {
        this.exc = FacesContext.getCurrentInstance().getExternalContext();
        this.sucursal = (Sucursales) exc.getSessionMap().get("sucursal");
        this.usuario = (WcUsuarios) exc.getSessionMap().get("usuario");
        this.sucursales = sfl.findAll();
        this.sucursalDespacha = (Sucursales) exc.getSessionMap().get("sucursal");
        this.numeroPedido = "ASIGNACION AUTOMATICA";
        this.nuevoPedido = true;
        this.cantidad = 0;
        this.cantidadString = new String();
        this.reparto = false;
        this.tipoReparto = 0;
        this.fechaEntregas = new Date();
        this.programaCodigo = generalesDao.findAll().get(0).getPrograma();
        this.credito = true;
        detallePedido = new ArrayList<>();
        ofertas = new ArrayList<>();
        this.sucursale = sucursal.getSucursalCodigo();
        this.usuarioCodigo = usuario.getUsuarioCodigo();
        this.nombreCliente = "------ NOMBRE CLIENTE -----------";
        this.disableDeTomaProdut = true;
        this.fechaEntregas = new Date();
        this.zonaReparto = "";
        this.liberarIni = !(usuario.getGrupoUsuario().getIdGruposUsuarios() == 9);

        this.datosReparto = new ConsultoresDatosReparto();

        client = new DatosCosultoresCompletos();
        this.usuarioTerritorio = "00";
        int useGroup = usuario.getGrupoUsuario().getIdGruposUsuarios();

        if (usuario.getGrupoUsuario().getIdGruposUsuarios() == 9) {
            usuarioTerritorio = usuario.getUsuarioNombre().substring(1);
        }

    }

    public boolean activaReparto() {
        boolean rs = false;

        if (reparto && (tipoReparto == 3||tipoReparto == 4)) {
            rs = true;
        }


        return rs;

    }

    public boolean activaDomiciolio() {
        boolean rs = false;

        if (reparto && (tipoReparto == 2|| tipoReparto == 4)) {
            rs = true;
        }
        return rs;

    }

    public void busquedaConsultor() {

        if (codigoCliente.length() == 6) {

            DatosCosultoresCompletos cliente = dccfl.busquedaDato(codigoCliente);
            if (cliente.getTerritorioCodigo().equals(usuarioTerritorio) || usuarioTerritorio.equals("00")) {

                datosReparto = cdrfl.obtenerDatoReparto(cliente.getConsultorCodigo());
                nombreCliente = cliente.getNombreConsultor();
                territorio = "Territorio: " + cliente.getTerritorioCodigo();
                saldosCosultor = "Saldo Pendiente: $" + cliente.getCargoPendiente().toString();
                rutas = rrfl.rutaRepartoListas(cliente.getTerritorioCodigo());
                zonaReparto = datosReparto.getCorrelativo_reparto();
                credito = cliente.getConsultorTipoPago();
                client = cliente;

                if (zonaReparto.length() == 0 & !reparto) {

                    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "SIN RUTA REPARTO", "Selecione ruta reparto");
                    PrimeFaces.current().dialog().showMessageDynamic(message);
                }

                disableDeTomaProdut = !(programaCodigo.length() > 1);
                fechaEntregas = new Date();

            } else {

                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "TERRITORIO " + usuarioTerritorio, "Consultor no pertenece a su territorio");
                PrimeFaces.current().dialog().showMessageDynamic(message);
            }
        }


    }

    public void guardarPedidoCab() {

        Pedidos pedg = new Pedidos();
        PedidosPK pedgPK = new PedidosPK();

        //--------------------------
        pedgPK.setNumeroPedido(asiganarPedidoGuardar());
        pedgPK.setTerritorio(client.getTerritorioCodigo());
        //---------------------

        pedg.setConsultorCodigo(client.getConsultorCodigo());
        pedg.setFacturaTotalConDescuento(new BigDecimal("0.00"));
        pedg.setFacturaTotalSinDescuento(new BigDecimal("0.00"));
        pedg.setPedidoAnulado(false);
        pedg.setPedidoCorrelativoReparto("0000");
        pedg.setPedidoCredito(true);
        pedg.setPedidoFecha(new Date());
        pedg.setPedidoReparto(reparto);
        pedg.setProgramaCodigo(generalesDao.findAll().get(0).getPrograma());
        pedg.setSucursal(sucursalDespacha.getSucursalCodigo());
        pedg.setUsuarioPedido(usuario.getUsuarioCodigo());
        pedg.setObservacionesReparto("Hoja Fisica");
        pedg.setFechaHoraRetira(new Date());
        pedg.setTipoPedido("FISICO");
        pedg.setPedidosPK(pedgPK);

        pedfl.create(pedg);

        numeroPedido = pedgPK.getNumeroPedido();
        propeddfl.nuevoProcesoDePedidoCab(client.getTerritorioCodigo(), numeroPedido, liberarIni);

        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Agregado Correctamente"));
        this.codigoCliente = "";
        this.nombreCliente = "";
        this.territorio = "";


    }

    public void obtenerProducto() {

        if (productoCodigo.length() == 0) {

        } else if (productoCodigo.length() == 5 || productoCodigo.length() == 4) {

            List<VprecioProgramaF> ofertasProductos = vppffl.obtenerProductoPorCodigoPedido(productoCodigo, programaCodigo);
            ofertas = new ArrayList<>();

            if (ofertasProductos.isEmpty()) {


                ofertasProductos = vppffl.OfertaParaFacturta(productoCodigo, programaCodigo);

                if (ofertasProductos.isEmpty()) {
                    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Codigo de producto Incorrecto", "ingrese codigo correto");
                    PrimeFaces.current().dialog().showMessageDynamic(message);
                } else {
                    for (VprecioProgramaF ofertasProducto : ofertasProductos) {

                        ofertas.add(ofertasProducto);
                    }

                    validaListaOfertas = ofertasProductos.size() < 1;
                    nombreProducto = ofertasProductos.get(0).getProductoNombre();
                    producto = ofertasProductos.get(0);
                    productos = ofertasProductos;
                }


            } else {
                for (VprecioProgramaF ofertasProducto : ofertasProductos) {

                    ofertas.add(ofertasProducto);
                }

                validaListaOfertas = ofertasProductos.size() < 1;
                nombreProducto = ofertasProductos.get(0).getProductoNombre();
                producto = ofertasProductos.get(0);
                productos = ofertasProductos;
            }

        } else {

            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Codigo de producto Incorrecto", "ingrese codigo correto");
            PrimeFaces.current().dialog().showMessageDynamic(message);

        }

    }

    public void obtenerProducto(String productoSel) {

        List<VprecioProgramaF> ofertasProductos = vppffl.obtenerProductoPorCodigoPedido(productoSel, programaCodigo);
        ofertas = new ArrayList<>();

        for (VprecioProgramaF ofertasProducto : ofertasProductos) {
            ofertas.add(ofertasProducto);
        }

        validaListaOfertas = ofertasProductos.size() < 1;
        nombreProducto = ofertasProductos.get(0).getProductoNombre();
        producto = ofertasProductos.get(0);
        this.productoCodigo = producto.getProductoCodigo();

    }

    public List<VprecioProgramaF> complete(String query) {

        List<VprecioProgramaF> q = new ArrayList<>();
        List<VprecioProgramaF> rs = new ArrayList<>();

        q = vppffl.obtenerProductoLikeNombrePedido(query, programaCodigo);

        productos = q;
        return q;
    }

    public void seteaVariables2() {

        try {

            if (producto.getProductoCodigo() != null) {
                obtenerProducto(producto.getProductoCodigo());
            }
            // this.productoSelect = producto;
        } catch (Exception e) {

        }

    }

    public void validaTomaDeProducto() {

    }

    public void cambiaProductoOferta() {
        this.producto = oferta;
    }

    public bTomaPedido() {
    }

    public String paletaColores(String color) {

        String rs = "";
        switch (color) {

            case "AMARRILO":
                rs = "#F8F802";
                break;
            case "AZUL":
                rs = "#2E64FE";
                break;
            case "CAFE":
                rs = "#964747";
                break;
            case "CELESTE":
                rs = "#67ACF1";
                break;
            case "FUCSIA":
                rs = "#F60CCB";
                break;
            case "MORADO":
                rs = "#A90CDF";
                break;
            case "NARANJA":
                rs = "#FA6502";
                break;
            case "ROSADA":
                rs = "#F5A9BC";
                break;
            case "S/COLOR":
                rs = "";
                break;
            case "VERDE":
                rs = "#04B431";
                break;
            default:
                break;

        }

        return rs;
    }

    public boolean validaExistenciaPedido() {

        for (CuerpoPedido i : detallePedido) {

            boolean out = i.getProductoCodigo().equals(producto.getProductoCodigo()) && i.getProdutoOfertaCodigo().equals(oferta.getOfertaCodigo());

            if (out) {
                return true;
            }

        }
        return false;
    }

    public void TotalSinDescuentos() {
        double rs = 0;
        for (CuerpoPedido i : detallePedido) {
            rs = rs + i.getTotalSinDescuento();
        }

        setSumaTotalSinDescuento(String.valueOf(Math.rint(rs * 100) / 100));
    }

    public void TotalConDescuentos() {
        double rs = 0;
        for (CuerpoPedido i : detallePedido) {
            rs = rs + i.getTotalConDescuento();
        }

        setSumaTotalConDescuento(String.valueOf(Math.rint(rs * 100) / 100));
    }

    public void borrar() {
        this.producto = new VprecioProgramaF();
        this.productoCodigo = new String();
        this.oferta = new VprecioProgramaF();
        this.cantidadString = new String();
        this.ofertas = new ArrayList<VprecioProgramaF>();
        pedido = new CuerpoPedido();
    }

    public void createNew() {
        //nuevoProducto();
        if (detallePedido.isEmpty()) {
            detallePedido.add(pedido);
        } else if (validaExistenciaPedido()) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "DUPLICADO", "El producto Ya esta en la Factura");
            PrimeFaces.current().dialog().showMessageDynamic(message);
        } else {
            detallePedido.add(pedido);
            pedido = new CuerpoPedido();
            // Collections.reverse(detallePedido);
        }
        this.producto = new VprecioProgramaF();
    }

    public String reinit() {
        pedido = new CuerpoPedido();
        return null;
    }

    public void nuevoProducto() {
        // Integer cantidad = getCantidad();

        CuerpoPedido cue = new CuerpoPedido();

        BigDecimal sd = getProducto().getPrecioProgramaSinDescuento();
        BigDecimal cd = getProducto().getPrecioProgramaConDescuento();

        Double totalSinDescuesto = sd.doubleValue() * cantidad;
        Double totalConDescuento = cd.doubleValue() * cantidad;

        cue.setCantidad(cantidad);
        cue.setProductoCodigo(getProducto().getProductoCodigo());
        cue.setProductoNombre(getProducto().getProductoNombre());
        cue.setProdutoOferta(getProducto().getNombreOferta());
        cue.setProdutoOfertaCodigo(getProducto().getOfertaCodigo());
        cue.setProductoPrecioSinDescuento(sd.doubleValue());
        cue.setProductoPrecioConDescuento(cd.doubleValue());
        cue.setTotalSinDescuento(Math.rint(totalSinDescuesto * 100) / 100);
        cue.setTotalConDescuento(Math.rint(totalConDescuento * 100) / 100);

        this.pedido = cue;

        setPedido(cue);
    }

    public void mensajes(String tipo) {
        String summary = liberarIni ? "Liberado" : "Retenido";

        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(summary));
    }


    public void ZonaTipoReparto(String tipo) {
        rutas = rrfl.rutaRepartoListasAndTipo(client.getTerritorioCodigo(), tipoReparto);
    }

    public void nuevoPedidoButton() {

        if (nuevoPedido) {
            nuevoPedido = false;
        }
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Iniciando nuevo pedido"));

    }

    public void traerProc(String productoCodigo) {

    }

    public void refresh() throws IOException {
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        context.redirect("tomapedido.jsf");

    }

    public void guardarPedido() {
        if (guardado) {

            if (fechaEntregas == null) {
                fechaEntregas = new Date();
            }

            cdrfl.edit(datosReparto);

            Pedidos pedg = new Pedidos();
            PedidosPK pedgPK = new PedidosPK();

            //--------------------------
            pedgPK.setNumeroPedido(asiganarPedidoGuardar());
            pedgPK.setTerritorio(client.getTerritorioCodigo());
            //---------------------

            pedg.setConsultorCodigo(client.getConsultorCodigo());
            pedg.setFacturaTotalConDescuento(new BigDecimal(sumaTotalConDescuento));
            pedg.setFacturaTotalSinDescuento(new BigDecimal(sumaTotalSinDescuento));
            pedg.setPedidoAnulado(false);
            if (zonaReparto.length() == 0) {
                pedg.setPedidoCorrelativoReparto("000");
            } else {

                pedg.setPedidoCorrelativoReparto(zonaReparto);
            }

            pedg.setPedidoCredito(credito);
            pedg.setPedidoFecha(new Date());
            pedg.setTipoReparto(tipoReparto);
            pedg.setPedidoReparto(reparto);
            pedg.setProgramaCodigo(programaCodigo);
            pedg.setSucursal(sucursalDespacha.getSucursalCodigo());
            pedg.setUsuarioPedido(usuario.getUsuarioCodigo());
            pedg.setObservaciones(observaciones);
            pedg.setObservacionesReparto(observacionesZonaReparto);
            pedg.setFechaHoraRetira(fechaEntregas);
            pedg.setTipoPedido("DIGITAL");
            pedg.setPedidosPK(pedgPK);

            pedfl.create(pedg);

            for (CuerpoPedido cue : detallePedido) {

                DetallePedidos dpg = new DetallePedidos();
                DetallePedidosPK dpgk = new DetallePedidosPK();

                dpgk.setNumeroPedido(pedgPK.getNumeroPedido());
                dpgk.setTerritorioe(client.getTerritorioCodigo());
                dpgk.setOfertaDetallePedido(cue.getProdutoOfertaCodigo());
                dpgk.setProductoCodigo(cue.getProductoCodigo());

                dpg.setCantidad(cue.getCantidad());
                dpg.setConDescuento(new BigDecimal(cue.getProductoPrecioConDescuento() * cue.getCantidad()));
                dpg.setSinDescuentto(new BigDecimal(cue.getProductoPrecioSinDescuento() * cue.getCantidad()));
                dpg.setDetallePedidosPK(dpgk);

                depedfl.guardarDetallePedido(dpg);
            }

            if (!zonaReparto.equals(datosReparto.getCorrelativo_reparto())) {
                datosReparto.setCorrelativo_reparto(zonaReparto);
                cdrfl.edit(datosReparto);
            }

            guardado = false;
            numeroPedido = pedgPK.getNumeroPedido();
            propeddfl.nuevoProcesoDePedido(client.getTerritorioCodigo(), numeroPedido, liberarIni);

            PrimeFaces.current().executeScript("PF('numeroPedTra').show();");
        }
    }

    public void soloActulu() {
        System.out.println(observaciones + "yes");
    }

    public String asiganarPedidoGuardar() {
        String rs = pedfl.obtenerPedidoSig(client.getTerritorioCodigo());

        int rsi = Integer.valueOf(rs) + 1;

        Formatter fmt = new Formatter();

        rs = fmt.format("%06d", rsi).toString();

        return rs;
    }


}
