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 RealizarConsignacion() { _consignacion.Id = Guid.NewGuid(); switch (_formMode) { case ActionFormMode.Create: _consignacion.NumeroComprobante = _consignacionNegocio.SiguienteNroConsignacion(Context.SucursalActual.Id).ToString(); break; case ActionFormMode.Edit: TxtNroConsignacion.Text = _consignacion.NumeroComprobante; break; } _consignacion.LCN = ""; _consignacion.ClienteId = _cliente.Id; _consignacion.PuntoVenta = 1;//; "no encuentro, pero no es igual a sucursal" _consignacion.FechaComprobante = _clock.Now; _consignacion.FechaVencimiento = DtpFechaVencimiento.Value; _consignacion.ImporteNeto = ucTitulosVenta.Titulos.Sum(x => x.PrecioVenta); _consignacion.ImporteIVA = IvaHelper.CalcularIva(_consignacion.ImporteNeto.Value); _consignacion.FechaEmision = _clock.Now; BtnRecargarNroFactura_Click(null, null); _consignacion.NumeroComprobante = TxtNroConsignacion.Text; _consignacion.LCN = LcnHelper.ObtenerLcn(_consignacion.NumeroComprobante,Context.SucursalActual.SucursalNumero ?? 1, "X"); _consignacion.Concepto = "CONSIGNACION PARA CLIENTES"; _consignacion.TipoComprobante = (int)Entidades.Enums.TipoComprobanteEnum.RemitosConsignacCliente; _consignacion.Observaciones = TxtObservacion.Text; _consignacion.FechaAlta = _clock.Now; _consignacion.SucursalAltaId = Context.SucursalActual.Id;//Sucursal del operador _consignacion.OperadorAltaId = Context.OperadorActual.Id;//Id el operador Uow.RemitosVentas.Agregar(_consignacion); //CONSIGNACION DETALLE foreach (var titulo in ucTitulosVenta.Titulos) { //Descontar stock var tituloStock = Uow.TitulosStock.Obtener(ts => ts.TituloId == titulo.TituloId && ts.SucursalId == Context.SucursalActual.Id); var cantidadAVender = titulo.Cantidad; int? cantpropia = 0; int? cantconsiganda = 0; if (tituloStock.StkPr > 0) { if (tituloStock.StkPr >= cantidadAVender) { tituloStock.StkPr -= cantidadAVender; cantpropia = cantidadAVender; cantidadAVender = 0; } else { cantpropia = tituloStock.StkPr; cantidadAVender -= tituloStock.StkPr; tituloStock.StkPr = 0; } } if (cantidadAVender > 0 && tituloStock.StkCn > 0) { if (tituloStock.StkCn >= cantidadAVender) { tituloStock.StkCn -= cantidadAVender; cantconsiganda = cantidadAVender; } else { _messageBoxDisplayService.ShowError("No hay suficiente stock para completar la consignación"); return; //Deberia cancelar la venta completa } } Uow.TitulosStock.Modificar(tituloStock); RemitosVentaDetalle remitoDetalle = new RemitosVentaDetalle(); remitoDetalle.Id = Guid.NewGuid(); remitoDetalle.RemitoVentaId = _consignacion.Id; remitoDetalle.TituloId = titulo.TituloId; remitoDetalle.CntPr = cantpropia; remitoDetalle.CntCn = cantconsiganda; remitoDetalle.PrecioVenta = titulo.PrecioVenta; remitoDetalle.PrecioBase = titulo.PrecioBase; remitoDetalle.Descuento = titulo.Descuento; remitoDetalle.FechaAlta = _clock.Now; remitoDetalle.SucursalAltaId = Context.SucursalActual.Id;//Sucursal del operador remitoDetalle.OperadorAltaId = (Context.OperadorActual.Id);//Id el operador Uow.RemitosVentasDetalle.Agregar(remitoDetalle); } Uow.Commit(); _messageBoxDisplayService.ShowSuccess(Resources.MessageSuccessConsignacionExitosa); using (var crearConsignacion = FormFactory.Create<FrmComprobanteConsignacion>(_consignacion.Id)) { crearConsignacion._descripcion = _consignacion.Concepto; crearConsignacion._formaPago = "CONSIGNACION"; crearConsignacion._recargo = ""; crearConsignacion.ShowDialog(); } var pageTab = this.Parent as RadPageViewPage; if (pageTab != null) { pageTab.Dispose(); }; }