Ejemplo n.º 1
0
        public void ObtenerPorCodigo_Test()
        {
            var tarjeta = _IRepositorioTarjeta.ObtenerPorCodigo("02");

            Assert.False(tarjeta == null);
        }
Ejemplo n.º 2
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;
            }
        }