Ejemplo n.º 1
0
        public ListaPrecioCliente ListaPrecioClienteGrabar(ListaPrecioCliente datoGraba)
        {
            RepositoryGenerico <ListaPrecioCliente> repository = new RepositoryGenerico <ListaPrecioCliente>();
            ListaPrecioCliente dato;

            if (datoGraba.Id == -1)
            {
                dato = new ListaPrecioCliente();
            }
            else
            {
                dato = repository.Obtener(datoGraba.Id);
                if (dato == null)
                {
                    throw new ApplicationException("No existe Lista de Precio");
                }
            }

            dato.Vigente     = datoGraba.Vigente;
            dato.Descripcion = datoGraba.Descripcion;
            dato.Codigo      = datoGraba.Codigo;
            dato.Precio      = datoGraba.Precio;
            dato.ListaPrecio = this.ObtenerObjeto <ListaPrecio>(datoGraba.ListaPrecio.Id);

            repository.Actualizar(dato);

            return(dato);
        }
 // GET api/listapreciocliente/5
 public IHttpActionResult Get(int id)
 {
     try
     {
         ServiciosProductos servicio = new ServiciosProductos();
         ListaPrecioCliente resp     = servicio.ObtenerObjeto <ListaPrecioCliente>(id);
         if (resp == null)
         {
             return(NotFound());
         }
         return(Ok(resp));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
 // POST api/listapreciocliente
 public IHttpActionResult Post([FromBody] ListaPrecioCliente datos)
 {
     try
     {
         ServiciosProductos servicio = new ServiciosProductos();
         ListaPrecioCliente resp     = servicio.ListaPrecioClienteGrabar(datos);
         if (resp == null)
         {
             return(NotFound());
         }
         return(Ok(resp));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
Ejemplo n.º 4
0
        public decimal ObtenerPrecioVentaDeArticulo(string pCodigoCliente, string pCodigoArticulo, string pCodigoAlmacen)
        {
            DateTime fechaProcesoVenta;
            string   codigoClienteInterno;
            int      cantidadDecimalPrecio;

            var configuracionGlobal = _IConfiguracionGlobalUnificado.UnificarConfiguracionGlobal();

            if (configuracionGlobal == null)
            {
                LogFactory.CrearLog().LogWarning(Mensajes.advertencia_ConfiguracionGlobalInvalido);
                throw new ArgumentException(Mensajes.advertencia_ConfiguracionGlobalInvalido);
            }
            else
            {
                fechaProcesoVenta     = configuracionGlobal.FechaProcesoVenta;
                codigoClienteInterno  = configuracionGlobal.CodigoClienteInterno;
                cantidadDecimalPrecio = configuracionGlobal.CantidadDecimalPrecio;
            }

            Articulo articulo = _IRepositorioArticulo.ObtenerPorCodigo(pCodigoArticulo, pCodigoAlmacen);

            if (articulo != null)
            {
                //Obtener Lista Precio Clientes
                ListaPrecioCliente listaPrecioCliente =
                    _IRepositorioListaPrecioCliente.ObtenerListaPrecioCliente(pCodigoCliente, pCodigoArticulo,
                                                                              pCodigoAlmacen, fechaProcesoVenta.ToString("yyyyMMdd"));

                //Obtener Lista Precio Inventarios
                ListaPrecioInventario listaPrecioInventario =
                    _IRepositorioListaPrecioInventario.ObtenerListaPrecioInventario(pCodigoArticulo, pCodigoAlmacen);

                return(_IServicioDominioListaPrecios.ObtenerPrecioVentaArticulo(articulo, listaPrecioCliente, listaPrecioInventario,
                                                                                pCodigoCliente, codigoClienteInterno, cantidadDecimalPrecio));
            }
            else
            {
                LogFactory.CrearLog().LogWarning(Mensajes.advertencia_ArticuloNoExiste, pCodigoArticulo);
                return(0);
            }
        }
        public decimal ObtenerPrecioVentaArticulo(Articulo pArticulo, ListaPrecioCliente pListaPrecioCliente,
                                                  ListaPrecioInventario pListaPrecioInventario, string pCodigoClienteDeListaPrecio,
                                                  string pCodigoClienteInterno, int pCantidadDecimalPrecio)
        {
            //Validacion de Articulo
            if (pArticulo == null)
            {
                throw new InvalidOperationException(Mensajes.excepcion_ArticuloNoExisteEnServicioDominioListaPrecios);
            }

            ////Validacion Listas Precios Disponibles
            //if (pListaPrecioCliente == null && pListaPrecioInventario == null)
            //    throw new InvalidOperationException(Mensajes.exception_CannotTransferMoneyWhenFromIsTheSameAsTo);

            //Validacion si articulo es habilitado
            if (!pArticulo.EsHabilitado)
            {
                throw new InvalidOperationException(Mensajes.excepcion_ArticuloNoHabilitadoEnServicioDominioListaPrecios);
            }

            //Precio por defecto
            decimal originalPrecioVenta = pArticulo.ArticuloDetalle.Precio;

            decimal nuevoPrecioVenta    = 0;
            decimal precioVentaObtenido = originalPrecioVenta; //Valor por defecto

            //Lista Precio de Clientes-----------
            if (pListaPrecioCliente != null && pListaPrecioCliente.ListaPrecioClienteDetalles.Any())
            {
                Nullable <int> modalidadDescuento = pListaPrecioCliente.ModalidadDescuento;

                decimal montoDescuento = pListaPrecioCliente.ListaPrecioClienteDetalles.FirstOrDefault().MontoDescuento;

                ////Validacion que no sea un cliente interno
                if (pCodigoClienteDeListaPrecio != pCodigoClienteInterno)
                {
                    //descuento en monto
                    if (modalidadDescuento == 1)
                    {
                        nuevoPrecioVenta = originalPrecioVenta - montoDescuento;
                    }
                    //descuento en porcentaje
                    else if (modalidadDescuento == 3)
                    {
                        nuevoPrecioVenta =
                            originalPrecioVenta - Math.Round(originalPrecioVenta * (montoDescuento / 100), pCantidadDecimalPrecio);
                    }
                }

                if (nuevoPrecioVenta > 0)
                {
                    precioVentaObtenido = nuevoPrecioVenta;
                }
            }

            //Lista Precio Inventario;
            if (pListaPrecioInventario != null && pListaPrecioInventario.ListaPrecioInventarioDetalles.Any())
            {
                if (nuevoPrecioVenta == 0)
                {
                    nuevoPrecioVenta = pListaPrecioInventario.ListaPrecioInventarioDetalles.FirstOrDefault().NuevoPrecioInventario;

                    if (nuevoPrecioVenta > 0)
                    {
                        precioVentaObtenido = nuevoPrecioVenta;
                    }
                }
            }

            return(precioVentaObtenido);
        }