void GrabarPedidoEESS(PedidoEESS pPedidoEESS)
        {
            //Persistir PedidoRetail
            // var validarEntidad = ValidadorEntidadFactory.CrearValidador();

            // if (validarEntidad.EsValido(pVenta))
            // {
            _IRepositorioPedidoEESS.Agregar(pPedidoEESS);
            // _IRepositorioVenta.UnidadTrabajo.Commit();
            // }
            // else
            //     throw new AplicacionExcepcionErrorValidacion(validarEntidad.RecibeMensajesInvalidos(pVenta));
        }
        void GrabarTransaccionNuevoPedidoEESS(PedidoEESS pPedidoEESS)
        {
            try
            {
                if (pPedidoEESS == null)
                {
                    throw new ArgumentException(Mensajes.advertencia_NoSePuedeGrabarPedidoEESSNulo);
                }

                // using (TransactionScope ambito = new TransactionScope(TransactionScopeOption.Suppress,
                //                                                         new TransactionOptions
                //                                                         {
                //                                                             IsolationLevel = IsolationLevel.ReadCommitted,
                //                                                             Timeout = TransactionManager.MaximumTimeout,
                //                                                         },
                //                                                         TransactionScopeAsyncFlowOption.Enabled))
                // {
                GrabarPedidoEESS(pPedidoEESS);

                //     ambito.Complete();
                // }
            }
            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;
            }
        }
        PedidoEESS CrearNuevoPedidoEESS(PedidoEESSDTO pPedidoEESSDTO)
        {
            try
            {
                PedidoEESS nuevoPedido = PedidoEESSFactory.CrearPedidoEESS(pPedidoEESSDTO.Correlativo, pPedidoEESSDTO.NumeroCara, pPedidoEESSDTO.NumeroDocumento,
                                                                           pPedidoEESSDTO.AfectaInventario, pPedidoEESSDTO.FechaDocumento, pPedidoEESSDTO.FechaProceso,
                                                                           pPedidoEESSDTO.Periodo, pPedidoEESSDTO.TotalNacional, pPedidoEESSDTO.TotalExtranjera,
                                                                           pPedidoEESSDTO.SubTotalNacional, pPedidoEESSDTO.SubTotalExtranjera, pPedidoEESSDTO.ImpuestoIgvNacional,
                                                                           pPedidoEESSDTO.ImpuestoIgvExtranjera, pPedidoEESSDTO.ImpuestoIscNacional, pPedidoEESSDTO.ImpuestoIscExtranjera,
                                                                           pPedidoEESSDTO.TotalNoAfectoNacional, pPedidoEESSDTO.TotalNoAfectoExtranjera, pPedidoEESSDTO.PorcentajeDescuentoPrimero,
                                                                           pPedidoEESSDTO.PorcentajeDescuentoSegundo, pPedidoEESSDTO.TotalDescuentoNacional, pPedidoEESSDTO.TotalDescuentoExtranjera,
                                                                           pPedidoEESSDTO.TotalVueltoNacional, pPedidoEESSDTO.TotalVueltoExtranjera, pPedidoEESSDTO.TotalEfectivoNacional,
                                                                           pPedidoEESSDTO.TotalEfectivoExtranjera, pPedidoEESSDTO.RucCliente, pPedidoEESSDTO.NombreCompletoCliente,
                                                                           pPedidoEESSDTO.Placa, pPedidoEESSDTO.NumeroVale, pPedidoEESSDTO.TipoCambio,
                                                                           pPedidoEESSDTO.ProcesadoCierreZ, pPedidoEESSDTO.ProcesadoCierreX, pPedidoEESSDTO.NumeroPuntos,
                                                                           pPedidoEESSDTO.NombreTerminal, pPedidoEESSDTO.Kilometraje, pPedidoEESSDTO.DireccionCliente,
                                                                           pPedidoEESSDTO.TipoCliente, pPedidoEESSDTO.DescripcionTipoCliente, pPedidoEESSDTO.DescripcionEstado,
                                                                           pPedidoEESSDTO.TipoCambioClienteCredito, pPedidoEESSDTO.DiasDeGraciaClienteCredito, pPedidoEESSDTO.LimiteCreditoClienteCredito,
                                                                           pPedidoEESSDTO.DeudaClienteClienteCredito, pPedidoEESSDTO.PlusCreditoClienteCredito, pPedidoEESSDTO.Afecto,
                                                                           pPedidoEESSDTO.NumeroTarjeta, pPedidoEESSDTO.PagoTarjeta, pPedidoEESSDTO.DescripcionTarjeta,
                                                                           pPedidoEESSDTO.CodigoTipoDocumento, pPedidoEESSDTO.CodigoTipoPago, pPedidoEESSDTO.CodigoAlmacen,
                                                                           pPedidoEESSDTO.CodigoMoneda, pPedidoEESSDTO.CodigoEstadoDocumento, pPedidoEESSDTO.CodigoCondicionPago,
                                                                           pPedidoEESSDTO.CodigoVendedor, pPedidoEESSDTO.CodigoUsuarioDeSistema, pPedidoEESSDTO.CodigoImpuestoIgv,
                                                                           pPedidoEESSDTO.CodigoImpuestoIsc, pPedidoEESSDTO.CodigoCliente, pPedidoEESSDTO.CodigoClaseTipoCambio,
                                                                           pPedidoEESSDTO.CodigoPuntoDeVenta, pPedidoEESSDTO.CodigoEstado, pPedidoEESSDTO.CodigoMonedaCredito,
                                                                           pPedidoEESSDTO.CodigoClaseTipoCambioClienteCredito, pPedidoEESSDTO.CodigoTarjetaPromocion, pPedidoEESSDTO.CodigoTarjeta,
                                                                           pPedidoEESSDTO.CodigoMonedaTarjeta);

                //Detalle de Pedido
                if (pPedidoEESSDTO.PedidoEESSDetalles != null && pPedidoEESSDTO.PedidoEESSDetalles.Any())
                {
                    foreach (var pedidoDetalle in pPedidoEESSDTO.PedidoEESSDetalles)
                    {
                        //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.AgregarNuevoPedidoEESSDetalle(pedidoDetalle.Secuencia, pedidoDetalle.NumeroTurno, pedidoDetalle.NumeroTransaccionCombustible,
                                                                                        pedidoDetalle.PorcentajeDescuentoPrimero, pedidoDetalle.PorcentajeDescuentoSegundo, pedidoDetalle.PorcentajeDescuentoNacional,
                                                                                        pedidoDetalle.PorcentajeDescuentoExtranjera, 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.DescripcionArticulo, pedidoDetalle.Cantidad,
                                                                                        pedidoDetalle.EsFormula, pedidoDetalle.EsArticuloCombustible, pedidoDetalle.NumeroPeaje,
                                                                                        pedidoDetalle.CodigoArticulo, pedidoDetalle.CodigoUnidadDeMedida, pedidoDetalle.CodigoArticuloAlterno);
                    }
                }

                //Pago Con Vale
                if (pPedidoEESSDTO.PedidoEESSConVales != null && pPedidoEESSDTO.PedidoEESSConVales.Any())
                {
                    foreach (var pedidoConVale in pPedidoEESSDTO.PedidoEESSConVales)
                    {
                        var pedidoPagaVale = nuevoPedido.AgregarNuevoPedidoEESSConVale(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;
            }
        }
        public void Agregar_Test()
        {
            var codigoMoneda         = "PEN";
            var codigoTarjeta        = "01";
            var codigoCliente        = "20167930868";
            var numeroDocumentoNuevo = "B04300212011";
            var correlativo          = 1;

            var nuevoPedidoEESS = new PedidoEESS()
            {
                Correlativo                = correlativo,
                NumeroCara                 = "03",
                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                 = codigoCliente,
                NombreCompletoCliente      = "PTS S.A - VENTA DE PRUEBA 2",
                Placa                       = "SQL-2020",
                NumeroVale                  = 7777,
                TipoCambio                  = 3.56M,
                ProcesadoCierreZ            = false,
                ProcesadoCierreX            = false,
                NumeroPuntos                = 60,
                NombreTerminal              = "PC-100",
                Kilometraje                 = 45,
                DireccionCliente            = "LIMA 100",
                TipoCliente                 = 1,
                DescripcionTipoCliente      = "",
                DescripcionEstado           = "ACTIVO",
                TipoCambioClienteCredito    = 3.35m,
                DiasDeGraciaClienteCredito  = 4,
                LimiteCreditoClienteCredito = 24.89M,
                DeudaClienteClienteCredito  = 45.78M,
                PlusCreditoClienteCredito   = 23.9M,
                Afecto                      = false,
                NumeroTarjeta               = "7898",
                PagoTarjeta                 = 1,
                DescripcionTarjeta          = "VISA"
            };

            nuevoPedidoEESS.EstablecerReferenciaTipoDocumentoDeVenta("12");
            nuevoPedidoEESS.EstablecerReferenciaTipoPagoDeVenta("01");
            nuevoPedidoEESS.EstablecerReferenciaAlmacenDeVenta("24");
            nuevoPedidoEESS.EstablecerReferenciaMonedaDeVenta(codigoMoneda);
            nuevoPedidoEESS.EstablecerReferenciaEstadoDocumentoDeVenta("OK");
            nuevoPedidoEESS.EstablecerReferenciaCondicionPagoDeVenta("00");
            nuevoPedidoEESS.EstablecerReferenciaVendedorDeVenta("76408758");
            nuevoPedidoEESS.EstablecerReferenciaUsuarioSistemaDeVenta("VENDPLAYA");
            nuevoPedidoEESS.EstablecerReferenciaImpuestoIgvDeCliente("IV");
            nuevoPedidoEESS.EstablecerReferenciaImpuestoIscDeCliente("SC");
            nuevoPedidoEESS.EstablecerReferenciaClienteDeVenta(codigoCliente);
            nuevoPedidoEESS.EstablecerReferenciaClaseTipoCambioDeVenta("TCONV");
            nuevoPedidoEESS.EstablecerReferenciaConfiguracionPuntoVentaDeVenta("PTOVTA02");
            nuevoPedidoEESS.EstablecerReferenciaEstadoDeVenta("1");
            nuevoPedidoEESS.EstablecerReferenciaMonedaCreditoDeVenta("PEN");
            nuevoPedidoEESS.EstablecerReferenciaClaseTipoCambioClienteCreditoDeVenta("TCONV");
            nuevoPedidoEESS.EstablecerReferenciaTarjetaPromocionDeVenta("232323");
            nuevoPedidoEESS.EstablecerReferenciaTarjetaDeVenta(codigoTarjeta);
            nuevoPedidoEESS.EstablecerReferenciaMonedaTarjetaDeVenta(codigoMoneda);

            nuevoPedidoEESS.AgregarNuevoPedidoEESSDetalle(1, 1, "7452",
                                                          0, 0, 0,
                                                          0, 19, 0,
                                                          23.00M, 0, 12.90M,
                                                          0, true, true,
                                                          2.6M, 2.6M, 0,
                                                          0, "ARTICULO PRUEBA", 1,
                                                          0, true, "",
                                                          "40101", "UND", "");

            nuevoPedidoEESS.AgregarNuevoPedidoEESSConVale(5465);

            _IRepositorioPedidoEESS.Agregar(nuevoPedidoEESS);

            var pedidoEncontrado = _IRepositorioPedidoEESS.ObtenerPorNumeroPedido(correlativo);

            Assert.True(correlativo == pedidoEncontrado.Correlativo);
        }