/// <summary> /// Analyzes a business entity against the snapshot and saves log if there has been a change. /// Returns true if there has been a change. /// </summary> /// <param name="entity">The entity to be compared to the snapshot</param> /// <param name="userName">The username that's performing the change</param> /// <returns></returns> public bool SaveChangeLog(MyGeneration.dOOdads.BusinessEntity entity, int userId) { bool dataChanged = false; foreach (DataColumn col in entity.DefaultView.Table.Columns) { string colBeforeChange = snapShot.GetColumn(col.ColumnName).ToString(); string colAfterChange = entity.GetColumn(col.ColumnName).ToString(); if (colBeforeChange != colAfterChange) //This column has been changed { dataChanged = true; LogReceiptChange log = new LogReceiptChange(); log.AddNew(); log.TableName = entity.GetType().ToString(); log.ColumnName = col.ColumnName; log.ChangedBy = userId; log.DateChanged = DateTimeHelper.ServerDateTime; log.RefID = int.Parse(snapShot.GetColumn("ID").ToString()); if (snapShot.GetColumn(col.ColumnName) != null) { log.OldValue = snapShot.GetColumn(col.ColumnName).ToString(); } if (entity.GetColumn(col.ColumnName) != null) { log.NewValue = entity.GetColumn(col.ColumnName).ToString(); } log.Save(); } } return(dataChanged); }
/// <summary> /// Analyzes a business entity against the snapshot and saves log if there has been a change. /// Returns true if there has been a change. /// </summary> /// <param name="entity">The entity to be compared to the snapshot</param> /// <param name="userName">The username that's performing the change</param> /// <returns></returns> public bool SaveChangeLog(MyGeneration.dOOdads.BusinessEntity entity, int userId) { bool dataChanged=false; foreach(DataColumn col in entity.DefaultView.Table.Columns) { string colBeforeChange = snapShot.GetColumn(col.ColumnName).ToString(); string colAfterChange=entity.GetColumn(col.ColumnName).ToString(); if (colBeforeChange != colAfterChange) //This column has been changed { dataChanged = true; LogReceiptChange log = new LogReceiptChange(); log.AddNew(); log.TableName = entity.GetType().ToString(); log.ColumnName = col.ColumnName; log.ChangedBy = userId; log.DateChanged = DateTimeHelper.ServerDateTime; log.RefID = int.Parse(snapShot.GetColumn("ID").ToString()); if (snapShot.GetColumn(col.ColumnName) != null) log.OldValue = snapShot.GetColumn(col.ColumnName).ToString(); if (entity.GetColumn(col.ColumnName) != null) log.NewValue = entity.GetColumn(col.ColumnName).ToString(); log.Save(); } } return dataChanged; }
private void btnSave_Click(object sender, EventArgs e) { LogReceiptChange change = new LogReceiptChange(rDoc); if (txtBatchNo.EditValue != null) { rDoc.BatchNo = txtBatchNo.Text; } if (dtExpiry.EditValue != null) { rDoc.ExpDate = dtExpiry.DateTime; } else { rDoc.SetColumnNull("ExpDate"); } if (txtPrice.EditValue != null) { rDoc.Cost = Convert.ToDouble(txtPrice.EditValue); } if(lkAccount.EditValue!=null) { rDoc.StoreID = Convert.ToInt32(lkAccount.EditValue); //TODO:Edit other tables as well. } if(lkUnit.EditValue!=null) { int unitID = Convert.ToInt32(lkUnit.EditValue); if (rDoc.UnitID != unitID) { rDoc.UnitID = Convert.ToInt32(lkUnit.EditValue); BLL.ItemUnit itemUnit = new ItemUnit(); itemUnit.LoadByPrimaryKey(rDoc.UnitID); rDoc.QtyPerPack = itemUnit.QtyPerUnit; rDoc.Quantity = rDoc.NoOfPack * rDoc.QtyPerPack; rDoc.QuantityLeft = rDoc.Quantity; BLL.ReceivePallet rp = new ReceivePallet(); rp.LoadByReceiveDocID(rDoc.ID); rp.Balance = rDoc.QuantityLeft; rp.ReceivedQuantity = rDoc.Quantity; rDoc.Save(); rp.Save(); } } // decide to save the quantity or not //Lord have mercy, this is not a proper way to do it, decimal quantity = Convert.ToDecimal(txtQuanitity.EditValue.ToString().Replace(",", "")); if (txtQuanitity.Enabled && !rDoc.HasTransactions() && rDoc.Quantity != rDoc.QtyPerPack * quantity) { // now find the receive pallets ReceivePallet receivePallet = new ReceivePallet(); receivePallet.LoadNonZeroRPByReceiveID(rDoc.ID); if (receivePallet.RowCount > 1) { // XtraMessageBox.Show( "This Item is stored in more than one location and chaning the quanitity is not implemented. try to consolidate it and try again"); } else { rDoc.NoOfPack = quantity; receivePallet.Balance = receivePallet.ReceivedQuantity = rDoc.QuantityLeft = rDoc.Quantity = quantity * rDoc.QtyPerPack; rDoc.Save(); receivePallet.Save(); } } else if (rDoc.Quantity != quantity * rDoc.QtyPerPack) { XtraMessageBox.Show("The Quantity was not edited because there was an issue transaction on it."); } rDoc.RefNo = txtGrvNo.EditValue.ToString(); //rDoc.SupplierID = Convert.ToInt32(lkSupplier.EditValue); if (lkManufacturer.EditValue != null) rDoc.ManufacturerId = Convert.ToInt32(lkManufacturer.EditValue); this.DialogResult = System.Windows.Forms.DialogResult.OK; rDoc.Save(); change.SaveChangeLog(rDoc, CurrentContext.UserId); this.LogActivity("Save-Receipt-Change", rDoc.ID); this.Close(); }