protected override void SubmitAction() { if (Datos_Partidas.Current == null) { PgMng.ShowInfoException(Face.Resources.Messages.NO_SELECTED); _action_result = DialogResult.Ignore; return; } _entity.SetSignoStock(); if (Bultos_CkB.Checked) { if (_entity.Bultos < 0) { if (Decimal.Round(PartidaActual.StockBultos, 2) + Decimal.Round(_entity.Bultos, 2) < 0) { PgMng.ShowInfoException(Resources.Messages.BULTOS_INSUFICIENTES + " " + PartidaActual.StockBultos.ToString("N2")); _action_result = DialogResult.Ignore; return; } } } else { if (_entity.Kilos < 0) { if (Decimal.Round(PartidaActual.StockKilos, 2) + Decimal.Round(_entity.Kilos, 2) < 0) { PgMng.ShowInfoException(Resources.Messages.STOCK_INSUFICIENTE + " " + PartidaActual.StockKilos.ToString("N2")); _action_result = DialogResult.Ignore; return; } } } string msg = string.Empty; switch (_entity.ETipoStock) { case ETipoStock.Todos: msg = "Seleccione un tipo de Movimiento de Stock"; break; case ETipoStock.Compra: msg = "Las entradas de Stock por Compra deben realizarse mediante un Albarán Recibido"; break; case ETipoStock.Venta: msg = "Las salidas de Stock por Venta deben realizarse mediante un Albarán Emitido"; break; case ETipoStock.MovimientoEntrada: msg = "Para dar de alta stock de otro expediente debe hacerlo realizando un Movimiento de Salida desde el expediente en cuestión"; break; case ETipoStock.MovimientoSalida: { if (_entry_expedient == null) { PgMng.ShowInfoException("No ha seleccionado el expediente de recepción de la mercancía"); _action_result = DialogResult.Ignore; return; } try { PgMng.Reset(4, 1, Face.Resources.Messages.SAVING, this); _entity.Observaciones = String.Format(Library.Store.Resources.Messages.SALIDA_POR_MOVIMIENTO, _entry_expedient.Codigo); PgMng.Grow(); _expedient.UpdateStocks(PartidaActual, true); PgMng.Grow(); //_expediente.ApplyEdit(); //_expediente.SaveAsChild(); PgMng.Grow(); _expedient.AddMovimientoStock(ETipoStock.MovimientoSalida, _entity, _entry_expedient, _expedient.SessionCode, true); _action_result = DialogResult.OK; } catch (Exception ex) { throw ex; } finally { PgMng.FillUp(); } return; } case ETipoStock.AltaKit: case ETipoStock.BajaKit: msg = "Las entradas y salidas de Stock de este tipo deben realizarse mediante Mezclas"; break; case ETipoStock.Consumo: { if (_entry_expedient == null) { PgMng.ShowInfoException("No ha seleccionado el expediente de recepción de la mercancía"); _action_result = DialogResult.Ignore; return; } try { PgMng.Reset(4, 1, Face.Resources.Messages.SAVING, this); _entity.Observaciones = String.Format(Library.Store.Resources.Messages.SALIDA_POR_MOVIMIENTO, _entry_expedient.Codigo); PgMng.Grow(); _expedient.UpdateStocks(PartidaActual, true); PgMng.Grow(); //_expediente.ApplyEdit(); //_expediente.SaveAsChild(); PgMng.Grow(); _expedient.AddMovimientoStock(ETipoStock.Consumo, _entity, _entry_expedient, _expedient.SessionCode, true); _action_result = DialogResult.OK; } catch (Exception ex) { throw ex; } finally { PgMng.FillUp(); } return; } } if (msg != string.Empty) { PgMng.ShowInfoException(msg); _action_result = DialogResult.Ignore; return; } _expedient.UpdateStocks(PartidaActual, true); _action_result = DialogResult.OK; }