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(); } }
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; }