Beispiel #1
0
        //ClaseTipoCambio
        public void EstablecerClaseTipoCambioDeCliente(ClaseTipoCambio pClaseTipoCambio)
        {
            if (pClaseTipoCambio == null)
            {
                throw new ArgumentException(Mensajes.excepcion_ClaseTipoCambioDeClienteEnEstadoNuloOTransitorio);
            }

            this.CodigoClaseTipoCambio = pClaseTipoCambio.CodigoClaseTipoCambio;
            this.ClaseTipoCambio       = pClaseTipoCambio;
        }
        public void EstablecerClaseTipoCambioOrigenDeConfiguracionGeneral(ClaseTipoCambio pClaseTipoCambioOrigen)
        {
            if (pClaseTipoCambioOrigen == null)
            {
                throw new ArgumentException(Mensajes.excepcion_ClaseTipoCambioOrigenDeConfiguracionGeneralEnEstadoNuloOTransitorio);
            }

            //relacion
            this.CodigoClaseTipoCambioOrigen = pClaseTipoCambioOrigen.CodigoClaseTipoCambio;
            this.ClaseTipoCambioOrigen       = pClaseTipoCambioOrigen;
        }
Beispiel #3
0
        public static Venta CrearVenta(string pNumeroDocumento, DateTime pFechaDocumento, DateTime pFechaProceso,
                                       string pPeriodo, decimal pTotalNacional, decimal pTotalExtranjera,
                                       decimal pSubTotalNacional, decimal pSubTotalExtranjera, decimal pImpuestoIgvNacional,
                                       decimal pImpuestoIGVExtranjera, decimal pImpuestoIscNacional, decimal pImpuestoIscExtranjera,
                                       decimal pTotalNoAfectoNacional, decimal pTotalNoAfectoExtranjera, decimal pTotalAfectoNacional,
                                       decimal pValorVenta, decimal pPorcentajeDescuentoPrimero, decimal pPorcentajeDescuentoSegundo,
                                       decimal pTotalDescuentoNacional, decimal pTotalDescuentoExtranjera, decimal pTotalVueltoNacional,
                                       decimal pTotalVueltoExtranjera, decimal pTotalEfectivoNacional, decimal pTotalEfectivoExtranjera,
                                       string pPlaca, decimal pNumeroVale, decimal pTipoCambio,
                                       bool pProcesadoCierreZ, bool pProcesadoCierreX, int pKilometraje, bool pAfectaInventario,
                                       Moneda pMoneda, ClaseTipoCambio pClaseTipoCambio, Cliente pCliente,
                                       TipoDocumento pTipoDocumento, EstadoDocumento pEstadoDocumento, Vendedor pVendedor,
                                       CondicionPago pCondicionPago, TipoPago pTipoPago, ConfiguracionPuntoVenta pConfiguracionPuntoVenta,
                                       Almacen pAlmacen, TipoNegocio pTipoNegocio, UsuarioSistema pUsuarioSistema)
        {
            var venta = new Venta();

            venta.GenerarNuevaIdentidad();

            venta.NumeroDocumento            = pNumeroDocumento;
            venta.FechaDocumento             = pFechaDocumento;
            venta.FechaProceso               = pFechaProceso;
            venta.Periodo                    = pPeriodo;
            venta.TotalNacional              = pTotalNacional;
            venta.TotalExtranjera            = pTotalExtranjera;
            venta.SubTotalNacional           = pSubTotalNacional;
            venta.SubTotalExtranjera         = pSubTotalExtranjera;
            venta.ImpuestoIgvNacional        = pImpuestoIgvNacional;
            venta.ImpuestoIgvExtranjera      = pImpuestoIGVExtranjera;
            venta.ImpuestoIscNacional        = pImpuestoIscNacional;
            venta.ImpuestoIscExtranjera      = pImpuestoIscExtranjera;
            venta.TotalNoAfectoNacional      = pTotalNoAfectoNacional;
            venta.TotalNoAfectoExtranjera    = pTotalNoAfectoExtranjera;
            venta.TotalAfectoNacional        = pTotalAfectoNacional;
            venta.ValorVenta                 = pValorVenta; //Investigar de donde sale el valor venta ? venta.Subtotalventa
            venta.PorcentajeDescuentoPrimero = pPorcentajeDescuentoPrimero;
            venta.PorcentajeDescuentoSegundo = pPorcentajeDescuentoSegundo;
            venta.TotalDescuentoNacional     = pTotalDescuentoNacional;
            venta.TotalDescuentoExtranjera   = pTotalDescuentoExtranjera;
            venta.TotalVueltoNacional        = pTotalVueltoNacional;
            venta.TotalVueltoExtranjera      = pTotalVueltoExtranjera;
            venta.TotalEfectivoNacional      = pTotalEfectivoNacional;
            venta.TotalEfectivoExtranjera    = pTotalEfectivoExtranjera;
            venta.RucCliente                 = pCliente.Ruc;                 //pRucCliente;
            venta.NombreCompletoCliente      = pCliente.NombresORazonSocial; //pNombreCompletoCliente;
            venta.Placa            = pPlaca;
            venta.NumeroVale       = pNumeroVale;
            venta.TipoCambio       = pTipoCambio;
            venta.ProcesadoCierreZ = pProcesadoCierreZ;
            venta.ProcesadoCierreX = pProcesadoCierreX;
            venta.Kilometraje      = pKilometraje;
            venta.AfectaInventario = pAfectaInventario;

            venta.Habilitar();

            venta.EstablecerMonedaDeVenta(pMoneda);
            venta.EstablecerClaseTipoCambioDeVenta(pClaseTipoCambio);
            venta.EstablecerClienteDeVenta(pCliente);
            venta.EstablecerTipoDocumentoDeVenta(pTipoDocumento);
            venta.EstablecerEstadoDocumentoDeVenta(pEstadoDocumento);
            venta.EstablecerVendedorDeVenta(pVendedor);
            venta.EstablecerCondicionPagoDeVenta(pCondicionPago);
            venta.EstablecerTipoPagoDeVenta(pTipoPago);
            venta.EstablecerConfiguracionPuntoVentaDeVenta(pConfiguracionPuntoVenta);
            venta.EstablecerAlmacenDeVenta(pAlmacen);
            venta.EstablecerTipoNegocioDeVenta(pTipoNegocio);
            venta.EstablecerUsuarioSistemaDeVenta(pUsuarioSistema);

            venta.EstablecerImpuestoIgvDeCliente(pCliente.ImpuestoIgv);

            if (pCliente.ImpuestoIsc != null)
            {
                venta.EstablecerImpuestoIscDeCliente(pCliente.ImpuestoIsc);
            }


            return(venta);
        }
        //este metodo no va
        public void CalcularVueltoVentaSegunMoneda(Venta pVenta, ClaseTipoCambio pClaseTipoCambio, bool pFlagCambioMonedaVuelto,
                                                   int pCantidadDecimalPrecio, decimal pEfectivoVueltoExtranjera, decimal pTotalVueltoSegunMoneda,
                                                   decimal pTotalFaltanteExtranjera, decimal pTotalFaltanteNacional, string pCodigoMonedaVuelto,
                                                   string pCodigoMonedaBase, string pCodigoMonedaExtranjera)
        {
            decimal totalEfectivoPagoNacional   = pVenta.TotalEfectivoNacional;
            decimal totalEfectivoPagoExtranjera = pVenta.TotalEfectivoExtranjera;

            decimal montoPagadoNacional   = 0;
            decimal montoPagadoExtranjera = 0;

            decimal totalVueltoNacional   = 0;
            decimal totalVueltoExtranjera = 0;

            decimal totalFaltanteNacional   = 0;
            decimal totalFaltanteExtranjera = 0;

            //Puede se moneda extranjera en cambio de moneda vuelto
            pCodigoMonedaVuelto = pVenta.CodigoMoneda;

            //Obtener totales desde tarjeta
            pVenta.CalcularTotalPagoConTarjeta(totalEfectivoPagoNacional, totalEfectivoPagoExtranjera, pCodigoMonedaBase);

            //obtener tipo de cambio de venta: VALIDARLO
            var tipoDeCambioANacionalSeleccionado = (from tipoCambioNacional in pClaseTipoCambio.TiposDeCambio
                                                     where tipoCambioNacional.CodigoMonedaDestino == pCodigoMonedaBase
                                                     select tipoCambioNacional).FirstOrDefault();

            var tipoDeCambioAExtranjeraSeleccionado = (from tipoCambioExtranjera in pClaseTipoCambio.TiposDeCambio
                                                       where tipoCambioExtranjera.CodigoMonedaDestino == pCodigoMonedaExtranjera
                                                       select tipoCambioExtranjera).FirstOrDefault();

            //Calcular total Pagos para calcular el vuelto segun moneda
            if (pVenta.CodigoMoneda == pCodigoMonedaBase)
            {
                montoPagadoNacional =
                    totalEfectivoPagoNacional + ObtenerConversionSegunTipoDeCambio(totalEfectivoPagoExtranjera,
                                                                                   tipoDeCambioANacionalSeleccionado.MontoTipoDeCambio,
                                                                                   tipoDeCambioANacionalSeleccionado.Operador,
                                                                                   pCantidadDecimalPrecio);

                montoPagadoExtranjera = ObtenerConversionSegunTipoDeCambio(montoPagadoNacional,
                                                                           tipoDeCambioAExtranjeraSeleccionado.MontoTipoDeCambio,
                                                                           tipoDeCambioAExtranjeraSeleccionado.Operador,
                                                                           pCantidadDecimalPrecio);
            }
            else
            {
                montoPagadoExtranjera =
                    totalEfectivoPagoExtranjera + ObtenerConversionSegunTipoDeCambio(totalEfectivoPagoNacional,
                                                                                     tipoDeCambioAExtranjeraSeleccionado.MontoTipoDeCambio,
                                                                                     tipoDeCambioAExtranjeraSeleccionado.Operador,
                                                                                     pCantidadDecimalPrecio);

                montoPagadoNacional = ObtenerConversionSegunTipoDeCambio(montoPagadoExtranjera,
                                                                         tipoDeCambioANacionalSeleccionado.MontoTipoDeCambio,
                                                                         tipoDeCambioANacionalSeleccionado.Operador,
                                                                         pCantidadDecimalPrecio);
            }


            //Calcular vuelto segun moneda
            ////Verificar Faltantes  en doble moneda
            if (pCodigoMonedaVuelto == pCodigoMonedaBase)
            {
                if (montoPagadoNacional >= pVenta.TotalNacional) //Entonces hay vuelto
                {
                    totalVueltoNacional = Math.Round(montoPagadoNacional - pVenta.TotalNacional,
                                                     pCantidadDecimalPrecio);
                    totalVueltoExtranjera = ObtenerConversionSegunTipoDeCambio(totalVueltoNacional,
                                                                               tipoDeCambioAExtranjeraSeleccionado.MontoTipoDeCambio,
                                                                               tipoDeCambioAExtranjeraSeleccionado.Operador,
                                                                               pCantidadDecimalPrecio);

                    totalFaltanteNacional   = 0;
                    totalFaltanteExtranjera = 0;
                }
                else
                {
                    totalVueltoNacional     = 0;
                    totalVueltoExtranjera   = 0;
                    totalFaltanteNacional   = pVenta.TotalNacional - montoPagadoNacional;
                    totalFaltanteExtranjera = ObtenerConversionSegunTipoDeCambio(pTotalFaltanteNacional,
                                                                                 tipoDeCambioAExtranjeraSeleccionado.MontoTipoDeCambio,
                                                                                 tipoDeCambioAExtranjeraSeleccionado.Operador,
                                                                                 pCantidadDecimalPrecio);
                }
            }
            else
            {
                if (montoPagadoExtranjera >= pVenta.TotalExtranjera)
                {
                    totalVueltoExtranjera = Math.Round(montoPagadoExtranjera - pVenta.TotalExtranjera,
                                                       pCantidadDecimalPrecio);
                    totalVueltoNacional = ObtenerConversionSegunTipoDeCambio(totalVueltoExtranjera,
                                                                             tipoDeCambioANacionalSeleccionado.MontoTipoDeCambio,
                                                                             tipoDeCambioANacionalSeleccionado.Operador,
                                                                             pCantidadDecimalPrecio);
                    totalFaltanteNacional   = 0;
                    totalFaltanteExtranjera = 0;
                }
                else
                {
                    totalVueltoExtranjera   = 0;
                    totalVueltoNacional     = 0;
                    totalFaltanteExtranjera = pVenta.TotalExtranjera - montoPagadoExtranjera;
                    totalFaltanteNacional   = ObtenerConversionSegunTipoDeCambio(pTotalFaltanteExtranjera,
                                                                                 tipoDeCambioANacionalSeleccionado.MontoTipoDeCambio,
                                                                                 tipoDeCambioANacionalSeleccionado.Operador,
                                                                                 pCantidadDecimalPrecio);
                }
            }

            //Resultado en Pantalla
            pTotalFaltanteNacional   = totalFaltanteNacional;
            pTotalFaltanteExtranjera = totalFaltanteExtranjera;

            //si se queiere saber sobre el simbolo de moenda tomar propiedad: IdMonedaVenta; idMonedaVuelto es temporal
            pTotalVueltoSegunMoneda = pCodigoMonedaVuelto == pCodigoMonedaBase ? totalVueltoNacional : totalVueltoExtranjera;

            //Obteniendo resultados de pago, vuelto, faltante
            pVenta.ValidarYActualizarPagoEnEfectivo(totalVueltoNacional, totalVueltoExtranjera, pCodigoMonedaVuelto, pCodigoMonedaBase);

            //solo cuando hay vuelto extranjero o bimoneda
            if (pFlagCambioMonedaVuelto == true)
            {
                CalcularVueltoVentaBimoneda(totalVueltoExtranjera, totalVueltoNacional,
                                            pTotalVueltoSegunMoneda, pEfectivoVueltoExtranjera,
                                            pCodigoMonedaVuelto, pCodigoMonedaBase,
                                            tipoDeCambioANacionalSeleccionado, pCantidadDecimalPrecio);
            }


            // //Actualizamos Venta Actual, con datos del pago
            // pVenta.TotalVueltoNacional = totalVueltoNacional;
            // pVenta.TotalVueltoExtranjera = totalVueltoExtranjera;
        }