コード例 #1
0
ファイル: Movimiento.cs プロジェクト: solutema/ultralight
        public override Lfx.Types.OperationResult Ok()
        {
            Lbl.Articulos.Articulo    Art = EntradaArticulo.Elemento as Lbl.Articulos.Articulo;
            Lfx.Types.OperationResult Res = new Lfx.Types.SuccessOperationResult();

            if (Art == null)
            {
                Res.Message += "Por favor seleccione un artículo." + Environment.NewLine;
                Res.Success  = false;
            }

            if (EntradaDesdeSituacion.ValueInt != EntradaDesdeSituacion.ValueInt)
            {
                Res.Message += @"Por favor indique ""Desde"" y ""Hacia""." + Environment.NewLine;
                Res.Success  = false;
            }

            if (EntradaCantidad.ValueDecimal <= 0)
            {
                Res.Message += "Por favor escriba la cantidad." + Environment.NewLine;
                Res.Success  = false;
            }

            if (Res.Success)
            {
                if (Art != null && Art.ObtenerSeguimiento() != Lbl.Articulos.Seguimientos.Ninguno)
                {
                    if (EntradaArticulo.DatosSeguimiento == null || EntradaArticulo.DatosSeguimiento.Count == 0)
                    {
                        return(new Lfx.Types.FailureOperationResult("Debe ingresar los datos de seguimiento (Ctrl-S) del artículo '" + Art.Nombre + "' para poder realizar movimientos de stock."));
                    }
                    else
                    {
                        if (EntradaArticulo.DatosSeguimiento.CantidadTotal < EntradaArticulo.Cantidad)
                        {
                            return(new Lfx.Types.FailureOperationResult("Debe ingresar los datos de seguimiento (Ctrl-S) de todos los artículos '" + Art.Nombre + "' para poder realizar movimientos de stock."));
                        }
                    }
                }
            }


            if (Res.Success)
            {
                IDbTransaction          Trans = this.Connection.BeginTransaction(IsolationLevel.Serializable);
                decimal                 Cantidad = EntradaCantidad.ValueDecimal;
                Lbl.Articulos.Situacion Origen, Destino;
                Origen  = EntradaDesdeSituacion.Elemento as Lbl.Articulos.Situacion;
                Destino = EntradaHaciaSituacion.Elemento as Lbl.Articulos.Situacion;
                Art.MoverExistencias(null, Cantidad, EntradaObs.Text, Origen, Destino, EntradaArticulo.DatosSeguimiento);
                Trans.Commit();
            }

            return(Res);
        }
コード例 #2
0
ファイル: Filtro.cs プロジェクト: njmube/lazaro
        public virtual void ImportarRegistro(MapaDeTabla mapa, Lfx.Data.Row importedRow)
        {
            object ImportIdValue = importedRow.Fields[mapa.ColumnaIdLazaro].Value;
            string ImportIdSqlValue;

            if (ImportIdValue is string)
            {
                ImportIdSqlValue = "'" + ImportIdValue.ToString() + "'";
            }
            else if (ImportIdValue is decimal || ImportIdValue is double)
            {
                ImportIdSqlValue = Lfx.Types.Formatting.FormatNumberSql(System.Convert.ToDecimal(ImportIdValue));
            }
            else if (ImportIdValue is DateTime)
            {
                ImportIdSqlValue = "'" + Lfx.Types.Formatting.FormatDateTimeSql(System.Convert.ToDateTime(ImportIdValue)) + "'";
            }
            else
            {
                ImportIdSqlValue = ImportIdValue.ToString();
            }

            Lfx.Data.Row         CurrentRow = this.Connection.FirstRowFromSelect("SELECT * FROM " + mapa.TablaLazaro + " WHERE " + mapa.ColumnaIdLazaro + "=" + ImportIdSqlValue);
            Lbl.IElementoDeDatos Elem       = ConvertirRegistroEnElemento(mapa, importedRow, CurrentRow);

            if (Elem != null)
            {
                this.GuardarElemento(mapa, Elem);

                if (this.Opciones.ImportarStock && Elem is Lbl.Articulos.Articulo && importedRow.Fields.Contains("stock_actual"))
                {
                    // Actualizo el stock
                    Lbl.Articulos.Articulo Art = Elem as Lbl.Articulos.Articulo;

                    decimal StockActual = Art.ObtenerExistencias();
                    decimal NuevoStock  = System.Convert.ToDecimal(importedRow["stock_actual"]);
                    decimal Diferencia  = NuevoStock - StockActual;

                    if (Diferencia != 0)
                    {
                        Art.MoverExistencias(null, Diferencia, "Stock importado desde " + this.Nombre, null, new Articulos.Situacion(this.Connection, Lfx.Workspace.Master.CurrentConfig.Productos.DepositoPredeterminado), null);
                    }
                }
            }
        }