Example #1
0
        private void AumentarStockConCantidadDevuelta(RendirConsignacionClienteData ventaData,
                                                      RemitosVentaDetalleDto remitoVentaDetalleActualizado, RemitosVentaDetalle remitoVentaDetalle)
        {
            //Sumar al stock si se devolvio algun libro del titulo
            if (remitoVentaDetalleActualizado.CntDevuelta > 0)
            {
                var tituloStock =
                    Uow.TitulosStock.Obtener(
                        ts => ts.TituloId == remitoVentaDetalleActualizado.TituloId && ts.SucursalId == ventaData.SucursalId);

                int?cantconsiganda    = 0;
                int?cantidadADevolver = remitoVentaDetalleActualizado.CntDevuelta;

                //Primero devuelvo los consignados
                if (remitoVentaDetalle.CntCn - (remitoVentaDetalle.CntDevuelta ?? 0) > 0)
                {
                    if ((remitoVentaDetalle.CntCn - (remitoVentaDetalle.CntDevuelta ?? 0)) >= remitoVentaDetalleActualizado.CntDevuelta)
                    {
                        tituloStock.StkCn += remitoVentaDetalleActualizado.CntDevuelta;
                        cantidadADevolver  = 0;
                    }
                    else
                    {
                        tituloStock.StkCn += (remitoVentaDetalleActualizado.CntDevuelta ?? 0) - (remitoVentaDetalle.CntCn - remitoVentaDetalle.CntDevuelta);
                        cantidadADevolver -= (remitoVentaDetalle.CntCn - (remitoVentaDetalle.CntDevuelta ?? 0));
                    }
                }
                //Despues los propios
                if (remitoVentaDetalle.CntPr > 0 && cantidadADevolver > 0)
                {
                    if (remitoVentaDetalle.CntPr >= cantidadADevolver)
                    {
                        tituloStock.StkPr += cantidadADevolver;
                    }
                }
            }
        }
        private void RealizarVenta()
        {
            RendirConsignacionClienteData consignacionData = new RendirConsignacionClienteData();

            consignacionData.EsVentaReservada  = _formMode == ActionFormMode.Edit;
            consignacionData.OperadorId        = Context.OperadorActual.Id;
            consignacionData.SucursalId        = Context.SucursalActual.Id;
            consignacionData.NumeroComprobante = _id;
            consignacionData.ClienteId         = _cliente.Id;

            consignacionData.TipoComprobanteSeleccionado    = UcBuscadorConsignacion.TipoComprobanteSeleccionado;
            consignacionData.CondicionVentaSeleccionada     = UcBuscadorConsignacion.CondicionVentaSeleccionada;
            consignacionData.TipoCajaMovimientoSeleccionado = UcBuscadorConsignacion.TipoCajaMovimientoSeleccionado;

            consignacionData.TotalPagar         = UcTotalesVenta.TotalPagar;
            consignacionData.Senas              = UcTotalesVenta.Senas;
            consignacionData.CreditosDevolucion = UcTotalesVenta.CreditosDevolucion;

            UcTitulosConsignacionVenta.ActualizarInfo();
            consignacionData.RemitosVentaDetalle = UcTitulosConsignacionVenta.Titulos;

            consignacionData.CajaActualId = Context.CajaActual.Id;
            consignacionData.Anticipo     = UcCuentaCorrienteInfo.Anticipo;
            //consignacionData.SubTotal = UcCuentaCorrienteInfo.SubTotal;
            consignacionData.SubTotal = UcTotalesVenta.SubTotal;

            consignacionData.Pagos            = UcTotalesVenta.Pagos;
            consignacionData.Cuotas           = UcCuentaCorrienteInfo.Cuotas;
            consignacionData.Montocuota       = UcCuentaCorrienteInfo.Montocuota;
            consignacionData.VencimientoCuota = UcCuentaCorrienteInfo.Vencimiento;
            consignacionData.PcAlta           = Environment.MachineName;
            consignacionData.PuntoVenta       = Context.SucursalActual.SucursalNumero ?? 1;

            CrearVentaResponse ventaResponse;

            try
            {
                ventaResponse = _ventaNegocio.CrearVentaRendicionConsignacionCliente(consignacionData);
            }
            catch (ApplicationException ex)
            {
                _messageBoxDisplayService.ShowError(ex.Message);
                return;
            }

            //if (ventaResponse.Comprobantes.Count != 0)
            //{
            foreach (var comprobante in ventaResponse.Comprobantes)
            {
                using (var crearComprobante = FormFactory.Create <FrmComprobante>())
                {
                    crearComprobante._concepto = comprobante.Concepto;
                    crearComprobante._LCN      = comprobante.LCN;
                    var conv = new Conversion();
                    crearComprobante._montoTexto       = conv.enletras((comprobante.Importe - comprobante.ImpOcupado).ToString());
                    crearComprobante._montoActualizado = (comprobante.Importe - comprobante.ImpOcupado);
                    crearComprobante.ShowDialog();
                }
            }

            //  _messageBoxDisplayService.ShowSuccess(Resources.MessageSuccessVentaExitosa);

            if (ChkImprimir.Checked)
            {
                DirectPrint print = new DirectPrint(Uow);
                print.Descripcion = ventaResponse.FacturaInfo.Descripcion;
                print.FormaPago   = ventaResponse.FacturaInfo.FormaPago;
                print.Recargo     = UcTotalesVenta.Recargo.ToString();
                print.GenerarFactura(ventaResponse.VentaId);
            }

            using (var crearVenta = FormFactory.Create <FrmFacturaVenta>(ventaResponse.VentaId))
            {
                if (ventaResponse.VentaId != Guid.Empty)
                {
                    crearVenta._descripcion = ventaResponse.FacturaInfo.Descripcion;
                    crearVenta._formaPago   = ventaResponse.FacturaInfo.FormaPago;
                    crearVenta._recargo     = UcTotalesVenta.Recargo.ToString();

                    crearVenta.ShowDialog();
                }
            }

            OnVentaRealizada();
            //}
            //else
            //{
            _messageBoxDisplayService.ShowSuccess("Rendición guardada con éxito");
            //}

            var pageTab = this.Parent as RadPageViewPage;

            if (pageTab != null)
            {
                pageTab.Dispose();
            }
            ;

            if (_formMode == ActionFormMode.Edit)
            {
                this.Close();
            }
        }
Example #3
0
        public CrearVentaResponse CrearVentaRendicionConsignacionCliente(RendirConsignacionClienteData ventaData)
        {
            CrearVentaResponse reponse = new CrearVentaResponse();

            var existeVenta =
                ventaData.RemitosVentaDetalle.Any(r => r.CntVendida.HasValue && r.CntVendida.Value != 0);

            var existeDevolucion =
                ventaData.RemitosVentaDetalle.Any(r => r.CntDevuelta.HasValue && r.CntDevuelta.Value != 0);

            if (!existeVenta && existeDevolucion)
            {
                foreach (var remitoVentaDetalleActualizado in ventaData.RemitosVentaDetalle)
                {
                    var remitoVentaDetalle =
                        Uow.RemitosVentasDetalle.Obtener(r => r.Id == remitoVentaDetalleActualizado.Id);

                    AumentarStockConCantidadDevuelta(ventaData, remitoVentaDetalleActualizado, remitoVentaDetalle);
                    //Actualizar remito venta.
                    remitoVentaDetalle.CntVendida   = remitoVentaDetalle.CntVendida ?? 0;
                    remitoVentaDetalle.CntDevuelta  = remitoVentaDetalle.CntDevuelta ?? 0;
                    remitoVentaDetalle.CntVendida  += remitoVentaDetalleActualizado.CntVendida;
                    remitoVentaDetalle.CntDevuelta += remitoVentaDetalleActualizado.CntDevuelta;

                    Uow.RemitosVentasDetalle.Modificar(remitoVentaDetalle);

                    Uow.Commit();

                    //return reponse;
                }
                return(reponse);
            }

            var venta = AgregarVenta(ventaData);

            foreach (var remitoVentaDetalleActualizado in ventaData.RemitosVentaDetalle)
            {
                var remitoVentaDetalle = Uow.RemitosVentasDetalle.Obtener(r => r.Id == remitoVentaDetalleActualizado.Id);

                var cantidadVendidaPropia =
                    remitoVentaDetalle.CalcularNuevaCantidadVendidaPropia(remitoVentaDetalleActualizado.CntVendida.GetValueOrDefault());

                var cantidadVendidaConsignacion =
                    remitoVentaDetalle.CalcularNuevaCantidadVendidaConsignacion(remitoVentaDetalleActualizado.CntVendida.GetValueOrDefault());


                AumentarStockConCantidadDevuelta(ventaData, remitoVentaDetalleActualizado, remitoVentaDetalle);
                //Actualizar remito venta.
                remitoVentaDetalle.CntVendida   = remitoVentaDetalle.CntVendida ?? 0;
                remitoVentaDetalle.CntDevuelta  = remitoVentaDetalle.CntDevuelta ?? 0;
                remitoVentaDetalle.CntVendida  += remitoVentaDetalleActualizado.CntVendida;
                remitoVentaDetalle.CntDevuelta += remitoVentaDetalleActualizado.CntDevuelta;

                Uow.RemitosVentasDetalle.Modificar(remitoVentaDetalle);


                //var cantidadVendidaPropia =
                //    remitoVentaDetalle.CalcularNuevaCantidadVendidaPropia(remitoVentaDetalleActualizado.CntVendida.GetValueOrDefault());

                //var cantidadVendidaConsignacion =
                //    remitoVentaDetalle.CalcularNuevaCantidadVendidaConsignacion(remitoVentaDetalleActualizado.CntVendida.GetValueOrDefault());

                if (remitoVentaDetalleActualizado.CntVendida > 0)
                {
                    AgregarVentaDetalle(venta, ventaData.SucursalId, ventaData.OperadorId,
                                        remitoVentaDetalleActualizado.TituloId, remitoVentaDetalleActualizado.Cantidad,
                                        remitoVentaDetalleActualizado.SubTotal,
                                        remitoVentaDetalleActualizado.PrecioBase, remitoVentaDetalleActualizado.Descuento,
                                        cantidadVendidaPropia, cantidadVendidaConsignacion);

                    if (cantidadVendidaConsignacion > 0)
                    {
                        var titulo = Uow.Titulos.Obtener(t => t.Id == remitoVentaDetalleActualizado.TituloId);

                        if (titulo != null)
                        {
                            AgregarTitulosConsignacionVendida(ventaData, titulo.Id, titulo.ProveedorId, venta, cantidadVendidaConsignacion);

                            ActualizarTitulosConsignaciones(ventaData, titulo.Id, titulo.ProveedorId, cantidadVendidaConsignacion);
                        }
                    }
                }
            }

            var caja = ActualizarCajaActual(ventaData, venta);

            var cajaMovimiento = CrearCajaMovimiento(ventaData, caja, venta);

            reponse.FacturaInfo.Descripcion += "Seña  $" + cajaMovimiento.Senia + ". ";

            foreach (var pago in ventaData.Pagos)
            {
                switch (pago.TipoPago)
                {
                case FormaPago.Efectivo:
                    cajaMovimiento.Efectivo        = pago.Importe;
                    reponse.FacturaInfo.FormaPago += "Efectivo $" + pago.Importe + ". ";
                    break;

                case FormaPago.Tarjeta:
                    ProcesarPagoTarjeta(ventaData, pago, cajaMovimiento);
                    reponse.FacturaInfo.FormaPago += "Tarjeta " + pago.Descripcion + " $" + pago.Importe + ". ";
                    break;

                case FormaPago.Cheque:
                    ProcesarPagoCheque(ventaData, pago, cajaMovimiento);
                    reponse.FacturaInfo.FormaPago += "Cheque " + pago.Descripcion + " $" + pago.Importe + ". ";
                    break;

                case FormaPago.Deposito:
                    ProcesarPagoDeposito(ventaData, pago, cajaMovimiento, venta, caja);
                    reponse.FacturaInfo.FormaPago += "Deposito " + pago.Descripcion + " $" + pago.Importe + ". ";
                    break;

                case FormaPago.CuentaCorriente:
                    ProcesarPagoCuentaCorriente(ventaData, reponse, venta);
                    reponse.FacturaInfo.Descripcion = "Anticipo $" + ventaData.Anticipo + ". " + reponse.FacturaInfo.Descripcion;
                    break;
                }
            }

            Uow.CajaMovimientos.Agregar(cajaMovimiento);

            AgregarClienteMovimiento(ventaData, venta);

            if (!ventaData.EsVentaReservada)
            {
                AumentarNumeroFactura(ventaData.OperadorId, ventaData.SucursalId);
            }

            ActualizarSeniasCliente(ventaData, reponse);

            ActualizarCreditosAFavorCliente(ventaData, reponse);

            reponse.VentaId = venta.Id;

            Uow.Commit();

            return(reponse);
        }