Beispiel #1
0
        public IActionResult AgregarNuevoPedidoRetail([FromBody] PedidoRetailDTO pPedidoRetailDTO)
        {
            try
            {
                if (pPedidoRetailDTO == null)
                {
                    return(BadRequest("Pedido Retail a grabar no puede ser nulo."));
                }

                var estadoPedidoRetailAgregado = _IServicioAplicacionPedidos.AgregarNuevoPedidoRetail(pPedidoRetailDTO);
                if (estadoPedidoRetailAgregado == null)
                {
                    return(BadRequest(
                               new ResultadoServicio <ResultadoPedidoRetailGrabadoDTO>(6, "Creacion de nuevo Pedido Retail fallo.", "", null, null)
                               ));
                }

                return(Ok(estadoPedidoRetailAgregado));
            }
            catch (Exception ex)
            {
                return(BadRequest(
                           new ResultadoServicio <ResultadoPedidoRetailGrabadoDTO>(6, "Creacion de nuevo Pedido Retail fallo.", ex.Message, null, null)
                           ));
            }
        }
        public ResultadoServicio <ResultadoPedidoRetailGrabadoDTO> AgregarNuevoPedidoRetail(PedidoRetailDTO pPedidoRetailDTO)
        {
            var pedidoRetailExistente = _IRepositorioPedidoRetail.ObtenerPorNumeroPedido(pPedidoRetailDTO.Correlativo);

            if (pedidoRetailExistente != null)
            {
                LogFactory.CrearLog().LogWarning(Mensajes.advertencia_PedidoRetailYaRegistrado);
                throw new ArgumentException(Mensajes.advertencia_PedidoRetailYaRegistrado);
            }

            var nuevoPedidoRetail = CrearNuevoPedidoRetail(pPedidoRetailDTO);

            GrabarTransaccionNuevoPedidoRetail(nuevoPedidoRetail);

            if (nuevoPedidoRetail != null)
            {
                return(new ResultadoServicio <ResultadoPedidoRetailGrabadoDTO>(7, Mensajes.advertencia_ExitosaCreacionNuevoPedidoRetail,
                                                                               string.Empty, nuevoPedidoRetail.ProyectadoComo <ResultadoPedidoRetailGrabadoDTO>(), null));
            }
            else
            {
                LogFactory.CrearLog().LogWarning(Mensajes.advertencia_FalloCreacionNuevoPedidoRetail);
                return(new ResultadoServicio <ResultadoPedidoRetailGrabadoDTO>(6, Mensajes.advertencia_FalloCreacionNuevoPedidoRetail,
                                                                               string.Empty, nuevoPedidoRetail.ProyectadoComo <ResultadoPedidoRetailGrabadoDTO>(), null));
            }
        }
Beispiel #3
0
        public void AgregarNuevoPedidoRetail_Test()
        {
            var correlativo          = 1778;
            var ruCliente            = "20167930868";
            var codigoMoneda         = "PEN";
            var codigoTarjeta        = "01";
            var numeroDocumentoNuevo = "B04300212012";
            var codigoAlmacen        = "24";

            var nuevoPedidoRetail = new PedidoRetailDTO()
            {
                Correlativo                = correlativo,
                NumeroDocumento            = numeroDocumentoNuevo,
                AfectaInventario           = true,
                FechaDocumento             = DateTime.Now,
                FechaProceso               = DateTime.Now,
                Periodo                    = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString(),
                TotalNacional              = 50.00M,
                TotalExtranjera            = 16.66M,
                SubTotalNacional           = 45.50M,
                SubTotalExtranjera         = 23.65M,
                ImpuestoIgvNacional        = 12.23M,
                ImpuestoIgvExtranjera      = 25.56M,
                ImpuestoIscNacional        = 0,
                ImpuestoIscExtranjera      = 0,
                TotalNoAfectoNacional      = 0,
                TotalNoAfectoExtranjera    = 0,
                PorcentajeDescuentoPrimero = 0,
                PorcentajeDescuentoSegundo = 0,
                TotalDescuentoNacional     = 0,
                TotalDescuentoExtranjera   = 0,
                TotalVueltoNacional        = 2.5M,
                TotalVueltoExtranjera      = 0.00M,
                TotalEfectivoNacional      = 60.00M,
                TotalEfectivoExtranjera    = 0.00M,
                RucCliente                 = ruCliente,
                NombreCompletoCliente      = "PTS S.A - VENTA DE PRUEBA 2",
                DireccionCliente           = "LIMA 100",
                Placa                = "SQL-2020",
                NumeroVale           = 7777,
                TipoCambio           = 3.56M,
                NumeroPuntos         = 60,
                Kilometraje          = 45,
                TransaccionPendiente = true,
                TipoVenta            = "A",
                TransaccionProcesada = false,
                AplicaDescuentoCupon = false,
                CentroDeCosto        = "0000-1111102222",

                CodigoTipoDocumento    = "12",
                CodigoTipoPago         = "01",
                CodigoAlmacen          = codigoAlmacen,
                CodigoMoneda           = codigoMoneda,
                CodigoCondicionPago    = "00",
                CodigoVendedor         = "76408758",
                CodigoUsuarioDeSistema = "VENDPLAYA",
                CodigoImpuestoIgv      = "IV",
                CodigoImpuestoIsc      = "SC ",
                CodigoCliente          = ruCliente,
                CodigoClaseTipoCambio  = "TCONV",
                CodigoTarjetaPromocion = "232323",
                CodigoPuntoDeVenta     = "PTOVTA02",
                CodigoTipoNegocio      = "2",
            };

            nuevoPedidoRetail.PedidoRetailDetalles = new List <PedidoRetailDetalleDTO>()
            {
                new PedidoRetailDetalleDTO {
                    Secuencia             = 1,
                    NumeroTurno           = 1,
                    PorcentajeImpuestoIgv = 19,
                    PorcentajeImpuestoIsc = 0,
                    TotalNacional         = 23.00M,
                    TotalExtranjera       = 0,
                    ImpuestoNacional      = 12,
                    ImpuestoExtranjera    = 4,
                    EsInventariable       = false,
                    EnInventarioFisico    = false,
                    Precio                  = 12.90M,
                    PrecioVenta             = 12.90M,
                    CostoEstandarNacional   = 0,
                    CostoEstandarExtranjera = 0,
                    CodigoArticuloAlterno   = "",
                    DescripcionArticulo     = "ARTICULO PRUEBA",
                    Cantidad                = 1,
                    EsFormula               = 0,
                    NumeroPeaje             = "",
                    CodigoAlmacen           = codigoAlmacen,
                    CodigoArticulo          = "40101",
                    CodigoUnidadDeMedida    = "UND"
                },
                new PedidoRetailDetalleDTO {
                    Secuencia             = 2,
                    NumeroTurno           = 1,
                    PorcentajeImpuestoIgv = 19,
                    PorcentajeImpuestoIsc = 0,
                    TotalNacional         = 23.00M,
                    TotalExtranjera       = 0,
                    ImpuestoNacional      = 12,
                    ImpuestoExtranjera    = 4,
                    EsInventariable       = false,
                    EnInventarioFisico    = false,
                    Precio                  = 12.90M,
                    PrecioVenta             = 12.90M,
                    CostoEstandarNacional   = 0,
                    CostoEstandarExtranjera = 0,
                    CodigoArticuloAlterno   = "",
                    DescripcionArticulo     = "ARTICULO PRUEBA",
                    Cantidad                = 1,
                    EsFormula               = 0,
                    NumeroPeaje             = "",
                    CodigoAlmacen           = codigoAlmacen,
                    CodigoArticulo          = "40101",
                    CodigoUnidadDeMedida    = "UND"
                }
            };

            nuevoPedidoRetail.PedidoRetailConTarjetas = new List <PedidoRetailConTarjetaDTO>()
            {
                new PedidoRetailConTarjetaDTO {
                    Secuencia              = 1,
                    NumeroTarjeta          = "2356",
                    TotalTarjetaNacional   = 23.0M,
                    TotalTarjetaExtranjera = 0,
                    EsTransaccionPinPad    = 0,
                    TipoTarjeta            = "A",
                    DNIAsociadoATarjeta    = "",
                    DescripcionTarjeta     = "VISA",
                    CodigoTarjeta          = codigoTarjeta,
                    CodigoMoneda           = codigoMoneda
                }
            };

            nuevoPedidoRetail.PedidoRetailConVales = new List <PedidoRetailConValeDTO>()
            {
                new PedidoRetailConValeDTO {
                    NumeroVale = 5466
                }
            };

            ResultadoServicio <ResultadoPedidoRetailGrabadoDTO> categorias = _IServicioAplicacionPedidos
                                                                             .AgregarNuevoPedidoRetail(nuevoPedidoRetail);

            ResultadoServicio <PedidoRetailDTO> pedidoRetailPorCorrelativoBuscado = _IServicioAplicacionPedidos
                                                                                    .BuscarPedidoRetailPorNumero(correlativo);

            Assert.True(categorias.Dato.Correlativo == pedidoRetailPorCorrelativoBuscado.Dato.Correlativo);
            Assert.True(categorias.Dato.RucCliente.Trim() == pedidoRetailPorCorrelativoBuscado.Dato.RucCliente.Trim());
        }
        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;
            }
        }