コード例 #1
0
        private void SincronizaLotes()
        {
            try
            {
                migrationTable  = migrationTableController.SelectOne(8);
                migrationFields = migrationFieldController.SelectByTableId(migrationTable.MigrationTableId);
                Sql             = "SELECT ";

                foreach (var f in migrationFields)
                {
                    if (migrationFields.Last() == f)
                    {
                        Sql += f.Expresion + " FROM " + migrationTable.Tabla;
                    }
                    else
                    {
                        Sql += f.Expresion + " , ";
                    }
                }
                Sql += " " + migrationTable.Condicion;
                GetDataTable(Sql);
                lote      = null;
                lotes     = loteController.SelectAll();
                productos = productoController.SelectAll();


                decimal  i = 0;
                DateTime dateTime;
                foreach (DataRow row in dataTable.Rows)
                {
                    Ambiente.S1 = row["producto"].ToString().Trim().ToUpper();
                    Ambiente.S2 = row["lote"].ToString().Trim().ToUpper();
                    Ambiente.S3 = "";
                    //var d = row["caducidad"].ToString().Trim();

                    Ambiente.Datetime1 = DateTime.TryParse(row["caducidad"].ToString().Trim(), out dateTime) == true ? dateTime : DateTime.Now;

                    Ambiente.Decimal1 = decimal.TryParse(row["cant"].ToString().Trim(), out i) == true ? i : 0;
                    Ambiente.Decimal2 = decimal.TryParse(row["cant_orig"].ToString().Trim(), out i) == true ? i : 0;
                    Ambiente.Decimal2 = Ambiente.Decimal2 == 0 ? Ambiente.Decimal1 : Ambiente.Decimal2;


                    lote = null;
                    lote = lotes.FirstOrDefault(x => x.ProductoId.ToUpper().Equals(Ambiente.S1) && x.NoLote.ToUpper().Equals(Ambiente.S2.ToUpper()));

                    if (lote == null)
                    {
                        producto = productos.FirstOrDefault(x => x.ProductoId.ToUpper().Equals(Ambiente.S1.ToUpper()));

                        if (producto == null)
                        {
                            Ambiente.S3 += " NO EXISTE PROD, " + Ambiente.S1 + " \n";
                            continue;
                        }


                        lote               = new Lote();
                        lote.ProductoId    = Ambiente.S1;
                        lote.NoLote        = Ambiente.S2.ToUpper();
                        lote.Caducidad     = Ambiente.Datetime1;
                        lote.StockInicial  = Ambiente.Decimal2;
                        lote.StockRestante = Ambiente.Decimal1;
                        lote.CreatedAt     = DateTime.Now;
                        lote.CreatedBy     = "JMENDOZAJ";
                        loteController.InsertOne(lote);
                    }
                    else
                    {
                        lote.ProductoId    = Ambiente.S1;
                        lote.NoLote        = Ambiente.S2.ToUpper();
                        lote.Caducidad     = Ambiente.Datetime1;
                        lote.StockInicial  = Ambiente.Decimal2;
                        lote.StockRestante = Ambiente.Decimal1;
                        lote.CreatedAt     = DateTime.Now;
                        lote.CreatedBy     = "JMENDOZAJ";
                        loteController.Update(lote);
                    }
                }

                //foreach (var l in lotes)
                //{
                //    producto = productos.FirstOrDefault(x => x.ProductoId.Equals(l.ProductoId));
                //}
                Ambiente.Mensaje("Proceso concluido");
            }
            catch (Exception ex)
            {
                Ambiente.Mensaje(ex.ToString());
            }
        }