public void Modificar_Test()
        {
            var articulo = new Articulo();

            articulo.CodigoArticulo = "20101";
            articulo.AgregarArticuloDetalle(0, 0, 0, 777888, DateTime.Now, DateTime.Now, 0, 0, 0, 0, 0, 0, 0, 0,
                                            string.Empty, string.Empty, string.Empty, string.Empty, "24");

            _IRepositorioArticuloTest.Modificar(articulo);

            var articuloModificado = _IRepositorioArticuloTest.ObtenerPorCodigo("20101", "24");

            Assert.True(articuloModificado.ArticuloDetalle.StockActual == articulo.ArticuloDetalle.StockActual);
        }
Example #2
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);
            }
        }
        PedidoRetail CrearNuevoPedidoRetail(PedidoRetailDTO pPedidoRetailDTO)
        {
            try
            {
                PedidoRetail nuevoPedido = PedidoRetailFactory.CrearPedidoRetail(pPedidoRetailDTO.Correlativo, pPedidoRetailDTO.NumeroDocumento, pPedidoRetailDTO.AfectaInventario,
                                                                                 pPedidoRetailDTO.FechaDocumento, pPedidoRetailDTO.FechaProceso, pPedidoRetailDTO.Periodo,
                                                                                 pPedidoRetailDTO.TotalNacional, pPedidoRetailDTO.TotalExtranjera, pPedidoRetailDTO.SubTotalNacional,
                                                                                 pPedidoRetailDTO.SubTotalExtranjera, pPedidoRetailDTO.ImpuestoIgvNacional, pPedidoRetailDTO.ImpuestoIgvExtranjera,
                                                                                 pPedidoRetailDTO.ImpuestoIscNacional, pPedidoRetailDTO.ImpuestoIscExtranjera, pPedidoRetailDTO.TotalNoAfectoNacional,
                                                                                 pPedidoRetailDTO.TotalNoAfectoExtranjera, pPedidoRetailDTO.PorcentajeDescuentoPrimero, pPedidoRetailDTO.PorcentajeDescuentoSegundo,
                                                                                 pPedidoRetailDTO.TotalDescuentoNacional, pPedidoRetailDTO.TotalDescuentoExtranjera, pPedidoRetailDTO.TotalVueltoNacional,
                                                                                 pPedidoRetailDTO.TotalVueltoExtranjera, pPedidoRetailDTO.TotalEfectivoNacional, pPedidoRetailDTO.TotalEfectivoExtranjera,
                                                                                 pPedidoRetailDTO.RucCliente, pPedidoRetailDTO.NombreCompletoCliente, pPedidoRetailDTO.DireccionCliente,
                                                                                 pPedidoRetailDTO.Placa, pPedidoRetailDTO.NumeroVale, pPedidoRetailDTO.TipoCambio,
                                                                                 pPedidoRetailDTO.NumeroPuntos, pPedidoRetailDTO.Kilometraje, pPedidoRetailDTO.TransaccionPendiente,
                                                                                 pPedidoRetailDTO.TipoVenta, pPedidoRetailDTO.TransaccionProcesada, pPedidoRetailDTO.AplicaDescuentoCupon,
                                                                                 pPedidoRetailDTO.CentroDeCosto, pPedidoRetailDTO.CodigoTipoDocumento, pPedidoRetailDTO.CodigoTipoPago,
                                                                                 pPedidoRetailDTO.CodigoAlmacen, pPedidoRetailDTO.CodigoMoneda, pPedidoRetailDTO.CodigoCondicionPago,
                                                                                 pPedidoRetailDTO.CodigoVendedor, pPedidoRetailDTO.CodigoUsuarioDeSistema, pPedidoRetailDTO.CodigoImpuestoIgv,
                                                                                 pPedidoRetailDTO.CodigoImpuestoIsc, pPedidoRetailDTO.CodigoCliente, pPedidoRetailDTO.CodigoClaseTipoCambio,
                                                                                 pPedidoRetailDTO.CodigoTarjetaPromocion, pPedidoRetailDTO.CodigoPuntoDeVenta, pPedidoRetailDTO.CodigoTipoNegocio);

                //Detalle de Pedido
                if (pPedidoRetailDTO.PedidoRetailDetalles != null && pPedidoRetailDTO.PedidoRetailDetalles.Any())
                {
                    foreach (var pedidoDetalle in pPedidoRetailDTO.PedidoRetailDetalles)
                    {
                        //Obtener Articulo y Precio
                        var articulo = _IRepositorioArticulo.ObtenerPorCodigo(pedidoDetalle.CodigoArticulo, pedidoDetalle.CodigoAlmacen);
                        if (articulo == null)
                        {
                            LogFactory.CrearLog().LogWarning(Mensajes.advertencia_ArticuloAsociadoAVentaDetalleNoExiste);
                            throw new ArgumentException(Mensajes.advertencia_ArticuloAsociadoAVentaDetalleNoExiste);
                        }

                        var detalleDePedido = nuevoPedido.AgregarNuevoPedidoRetailDetalle(pedidoDetalle.Secuencia, pedidoDetalle.NumeroTurno, pedidoDetalle.PorcentajeImpuestoIgv,
                                                                                          pedidoDetalle.PorcentajeImpuestoIsc, pedidoDetalle.TotalNacional, pedidoDetalle.TotalExtranjera,
                                                                                          pedidoDetalle.ImpuestoNacional, pedidoDetalle.ImpuestoExtranjera, pedidoDetalle.EsInventariable,
                                                                                          pedidoDetalle.EnInventarioFisico, pedidoDetalle.Precio, pedidoDetalle.PrecioVenta,
                                                                                          pedidoDetalle.CostoEstandarNacional, pedidoDetalle.CostoEstandarExtranjera, pedidoDetalle.CodigoArticuloAlterno,
                                                                                          pedidoDetalle.DescripcionArticulo, pedidoDetalle.Cantidad, pedidoDetalle.EsFormula,
                                                                                          pedidoDetalle.NumeroPeaje, pedidoDetalle.CodigoArticulo, pedidoDetalle.CodigoUnidadDeMedida);
                    }
                }

                //pago con tarjeta
                if (pPedidoRetailDTO.PedidoRetailConTarjetas != null && pPedidoRetailDTO.PedidoRetailConTarjetas.Any())
                {
                    foreach (var pedidoConTarjeta in pPedidoRetailDTO.PedidoRetailConTarjetas)
                    {
                        var moneda = _IRepositorioMoneda.ObtenerPorCodigo(pedidoConTarjeta.CodigoMoneda);
                        if (moneda == null)
                        {
                            LogFactory.CrearLog().LogWarning(Mensajes.advertencia_MonedaAsociadoAPagoVentaConTarjetaNoExiste);
                            throw new ArgumentException(Mensajes.advertencia_MonedaAsociadoAPagoVentaConTarjetaNoExiste);
                        }

                        var tarjeta = _IRepositorioTarjeta.ObtenerPorCodigo(pedidoConTarjeta.CodigoTarjeta);
                        if (tarjeta == null)
                        {
                            LogFactory.CrearLog().LogWarning(Mensajes.advertencia_TarjetaAsociadoAPagoVentaConTarjetaNoExiste);
                            throw new ArgumentException(Mensajes.advertencia_TarjetaAsociadoAPagoVentaConTarjetaNoExiste);
                        }

                        var pedidoPagaTarjeta = nuevoPedido.AgregarNuevoPedidoRetailConTarjeta(pedidoConTarjeta.Secuencia, pedidoConTarjeta.NumeroTarjeta, pedidoConTarjeta.TotalTarjetaNacional,
                                                                                               pedidoConTarjeta.TotalTarjetaExtranjera, pedidoConTarjeta.EsTransaccionPinPad, pedidoConTarjeta.TipoTarjeta,
                                                                                               pedidoConTarjeta.DNIAsociadoATarjeta, pedidoConTarjeta.DescripcionTarjeta, pedidoConTarjeta.CodigoTarjeta);
                    }
                }

                //Pago Con Vale
                if (pPedidoRetailDTO.PedidoRetailConVales != null && pPedidoRetailDTO.PedidoRetailConVales.Any())
                {
                    foreach (var pedidoConVale in pPedidoRetailDTO.PedidoRetailConVales)
                    {
                        var pedidoPagaVale = nuevoPedido.AgregarNuevoPedidoRetailConVale(pedidoConVale.NumeroVale);
                    }
                }

                return(nuevoPedido);
            }
            catch (Exception ex)
            {
                string detallesAsicionales = string.Empty;
                string cadenaExcepcion     = ex.Message;

                if (ex.InnerException != null)
                {
                    detallesAsicionales = " .Detalles Interno: " + ex.InnerException != null && ex.InnerException.InnerException != null ?
                                          ex.InnerException.InnerException.Message : "Ver Detalles.";
                }

                LogFactory.CrearLog().LogWarning(cadenaExcepcion + detallesAsicionales);
                throw;
            }
        }