private void AddRawMaterial(ItemMt itemMt) { try { Classes.ItemEyBom itemEyBom = _itemBom.FirstOrDefault(); var rawMaterial = itemEyBom.RawMaterials.Where(a => a.IdItemBcn.Equals(itemMt.IdItemBcn)); if (rawMaterial == null || rawMaterial.Count() == 0) { Classes.Bom bom = new Classes.Bom(); bom.IdItemBcn = itemMt.IdItemBcn; bom.Description = itemMt.ItemDescription; bom.IdItemGroup = Constants.ITEM_GROUP_MT; bom.Quantity = 0; bom.Waste = 0; itemEyBom.RawMaterials.Add(bom); grdBomRefreshAndExpand(); } else { XtraMessageBox.Show("Raw Material already exist"); } } catch (Exception ex) { throw ex; } }
private void GridViewItemsMt_DoubleClick(object sender, EventArgs e) { try { GridView view = sender as GridView; ItemMt itemMt = view.GetRow(view.FocusedRowHandle) as ItemMt; AddRawMaterial(itemMt); } catch (Exception ex) { XtraMessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public bool UpdateItemWithDoc(ItemMt updateItem, ItemDoc itemDoc, bool newVersion = false) { try { if (updateItem == null) { throw new ArgumentNullException(nameof(updateItem)); } if (itemDoc == null) { throw new ArgumentNullException(nameof(itemDoc)); } using (var db = new HKSupplyContext()) { using (var dbTrans = db.Database.BeginTransaction()) { try { ItemMt itemToUpdate = GetItem(updateItem.IdItemBcn); if (itemToUpdate == null) { return(false); } //Hay que agregarlo al contexto actual para que lo actualice db.ItemsMt.Attach(itemToUpdate); itemToUpdate.IdSubVer += 1; if (newVersion == true) { itemToUpdate.IdVer += 1; itemToUpdate.IdSubVer = 0; } itemToUpdate.Timestamp = DateTime.Now; //no hacemos un "entry" en el contexto de db y lo marcamos como modificado, sino que updatamos sólo los pocos campos //que se pueden modificar de un item desde la aplicación para que EF genere el update sólo de esos campos y no de todos itemToUpdate.IdDefaultSupplier = updateItem.IdDefaultSupplier; itemToUpdate.IdFamilyHK = updateItem.IdFamilyHK; itemToUpdate.IdStatusProd = updateItem.IdStatusProd; itemToUpdate.IdUserAttri1 = updateItem.IdUserAttri1; itemToUpdate.IdUserAttri2 = updateItem.IdUserAttri2; itemToUpdate.IdUserAttri3 = updateItem.IdUserAttri3; itemToUpdate.PhotoUrl = updateItem.PhotoUrl; ItemMtHistory itemHistory = (ItemMtHistory)itemToUpdate; itemHistory.User = GlobalSetting.LoggedUser.UserLogin; //Documento itemDoc.IdVerItem = itemToUpdate.IdVer; itemDoc.IdSubVerItem = itemToUpdate.IdSubVer; itemDoc.CreateDate = DateTime.Now; db.ItemsMtHistory.Add(itemHistory); db.ItemsDoc.Add(itemDoc); db.SaveChanges(); dbTrans.Commit(); return(true); } catch (DbEntityValidationException e) { dbTrans.Rollback(); _log.Error(e.Message, e); throw e; } catch (SqlException sqlex) { dbTrans.Rollback(); for (int i = 0; i < sqlex.Errors.Count; i++) { _log.Error("Index #" + i + "\n" + "Message: " + sqlex.Errors[i].Message + "\n" + "Error Number: " + sqlex.Errors[i].Number + "\n" + "LineNumber: " + sqlex.Errors[i].LineNumber + "\n" + "Source: " + sqlex.Errors[i].Source + "\n" + "Procedure: " + sqlex.Errors[i].Procedure + "\n"); switch (sqlex.Errors[i].Number) { case -1: //connection broken case -2: //timeout throw new DBServerConnectionException(GlobalSetting.ResManager.GetString("DBServerConnectionError")); } } throw sqlex; } catch (Exception ex) { dbTrans.Rollback(); _log.Error(ex.Message, ex); throw ex; } } } } catch (ArgumentNullException anex) { _log.Error(anex.Message, anex); throw anex; } }
public bool UpdateItems(IEnumerable <ItemMt> itemsToUpdate) { try { if (itemsToUpdate == null) { throw new ArgumentNullException(nameof(itemsToUpdate)); } using (var db = new HKSupplyContext()) { using (var dbTrans = db.Database.BeginTransaction()) { try { foreach (var item in itemsToUpdate) { ItemMt itemToUpdate = db.ItemsMt.Where(a => a.IdItemBcn.Equals(item.IdItemBcn)).FirstOrDefault(); itemToUpdate.IdSubVer += 1; itemToUpdate.Timestamp = DateTime.Now; //no hacemos un "entry" en el contexto de db y lo marcamos como modificado, sino que updatamos sólo los pocos campos //que se pueden modificar de un item desde la aplicación para que EF genere el update sólo de esos campos y no de todos itemToUpdate.IdDefaultSupplier = item.IdDefaultSupplier; itemToUpdate.IdFamilyHK = item.IdFamilyHK; itemToUpdate.IdStatusProd = item.IdStatusProd; itemToUpdate.IdUserAttri1 = item.IdUserAttri1; itemToUpdate.IdUserAttri2 = item.IdUserAttri2; itemToUpdate.IdUserAttri3 = item.IdUserAttri3; ItemMtHistory itemHistory = (ItemMtHistory)itemToUpdate; itemHistory.User = GlobalSetting.LoggedUser.UserLogin; db.ItemsMtHistory.Add(itemHistory); } db.SaveChanges(); dbTrans.Commit(); return(true); } catch (SqlException sqlex) { dbTrans.Rollback(); for (int i = 0; i < sqlex.Errors.Count; i++) { _log.Error("Index #" + i + "\n" + "Message: " + sqlex.Errors[i].Message + "\n" + "Error Number: " + sqlex.Errors[i].Number + "\n" + "LineNumber: " + sqlex.Errors[i].LineNumber + "\n" + "Source: " + sqlex.Errors[i].Source + "\n" + "Procedure: " + sqlex.Errors[i].Procedure + "\n"); switch (sqlex.Errors[i].Number) { case -1: //connection broken case -2: //timeout throw new DBServerConnectionException(GlobalSetting.ResManager.GetString("DBServerConnectionError")); } } throw sqlex; } catch (DbEntityValidationException e) { dbTrans.Rollback(); _log.Error(e.Message, e); throw e; } catch (Exception ex) { dbTrans.Rollback(); _log.Error(ex.Message, ex); throw ex; } } } } catch (ArgumentNullException nrex) { _log.Error(nrex.Message, nrex); throw nrex; } }