public decimal GetOHQuantity(int iCcnid, int iBinId, int iLocationId, int iProductId) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var objBin = db.IV_BinCaches.SingleOrDefault(e => e.LocationID == iLocationId && e.BinID == iBinId && e.ProductID == iProductId); if (objBin != null) { if (objBin.OHQuantity != null) { return(Convert.ToDecimal(objBin.OHQuantity.ToString())); } } } return(0); }
/// <summary> /// Lists the bin cache. /// </summary> /// <param name="locationId">The location id.</param> /// <param name="binId">The bin id.</param> /// <param name="productId">The product id.</param> /// <returns></returns> public List <IV_BinCache> ListBinCache(int locationId, int binId, int productId) { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); return(locationId > 0 ? (binId > 0 ? (productId > 0 ? dataContext.IV_BinCaches.Where(b => b.LocationID == locationId && b.BinID == binId && b.ProductID == productId).ToList() : dataContext.IV_BinCaches.Where(b => b.LocationID == locationId && b.BinID == binId).ToList()) : (productId > 0 ? dataContext.IV_BinCaches.Where(b => b.LocationID == locationId && b.ProductID == productId).ToList() : dataContext.IV_BinCaches.Where(b => b.LocationID == locationId).ToList())) : (productId > 0 ? dataContext.IV_BinCaches.Where(b => b.ProductID == productId).ToList() : dataContext.IV_BinCaches.ToList())); }
public void Execute(IJobExecutionContext context) { var Date = DateTime.Today; var PreviousDay = Date.AddDays(-1 * int.Parse(ConfigurationManager.AppSettings["NumberOfDaysInThePast"])); using (PCSDataContext PCSContext = new PCSDataContext()) { foreach (PCSAudit audit in PCSContext.Audits.Get(x => x.TransAuditStatus == (int)AuditStatus.ValidatedIncorrect) .Where(x => x.AuditDate >= PreviousDay && (x.Lane.LaneCode == "09MS" || x.Lane.LaneCode == "12MN")) .OrderBy(x => x.AuditDate).ThenBy(x => x.AuditHour) .Take(int.Parse(ConfigurationManager.AppSettings["AuditChunkSize_Trans"]))) { Log.LogInfoMessage(string.Format("Auditing transactions {0} {1} {2}", audit.Lane.LaneCode, audit.AuditDate.ToShortDateString(), audit.AuditHour)); PCSAudit audit_ = audit; // avoid closure issues DateTime StartDate = audit_.AuditDate.Date; DateTime EndDate = audit_.AuditDate.Date.AddDays(1); var TransactionCount = PCSContext.Transactions.Count(x => x.TransDate.Hour == audit_.AuditHour && x.TransDate > StartDate && x.TransDate < EndDate && x.Session.Lane.LaneGUID == audit_.LaneGuid); AuditTransactions(TransactionCount, audit, PCSContext); } /*foreach (PCSAudit audit in PCSContext.Audits.Get(x => x.IncidentAuditStatus == (int)AuditStatus.ValidatedIncorrect) * .Where(x => x.AuditDate >= PreviousDay) * .OrderBy(x => x.AuditDate).ThenBy(x => x.AuditHour) * .Take(int.Parse(ConfigurationManager.AppSettings["AuditChunkSize_Inc"]))) * { * Log.LogInfoMessage(string.Format("Auditing incidents {0} {1} {2}", audit.Lane.LaneCode, audit.AuditDate.ToShortDateString(), audit.AuditHour)); * * PCSAudit audit_ = audit; // avoid closure issues * DateTime StartDate = audit_.AuditDate.Date; * DateTime EndDate = audit_.AuditDate.Date.AddDays(1); * * var IncidentCount = (from i in PCSContext.Incidents.Where(x => x.IncidentSetDate.Hour == audit_.AuditHour && x.IncidentSetDate > StartDate && x.IncidentSetDate < EndDate) * join sl in PCSContext.StaffLogins.Where() on i.StaffLoginGUID equals sl.StaffLoginGUID * where sl.LocationGUID == audit_.LaneGuid * select i.IncidentGUID).Count(); * * AuditIncidents(IncidentCount, audit, PCSContext); * }*/ } }
//Khanh Edit Update public void Update(object pObjectDetail) { const string METHOD_NAME = "" + ".Update()"; var objMaster = (Sys_UserVO)pObjectDetail; try { using (var trans = new TransactionScope()) { var dcPCS = new PCSDataContext(Utils.Instance.ConnectionString); // update master object first var objMatchedMaster = dcPCS.Sys_Users.SingleOrDefault( e => e.UserID == objMaster.UserID); if (objMatchedMaster != null) { objMatchedMaster.UserName = objMaster.UserName; objMatchedMaster.Pwd = objMaster.Pwd; objMatchedMaster.Name = objMaster.Name; objMatchedMaster.Description = objMaster.Description; objMatchedMaster.EmployeeID = objMaster.EmployeeID; objMatchedMaster.MasterLocationID = objMaster.MasterLocationID; objMatchedMaster.Activate = objMaster.Activate; objMatchedMaster.ExpiredDate = objMaster.ExpiredDate; } dcPCS.SubmitChanges(); trans.Complete(); // trans.Complete(); } } catch (SqlException ex) { if (ex.Errors.Count > 1) { if (ex.Number == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } }
/// <summary> /// Gets the rate. /// </summary> /// <param name="inId">The in id.</param> /// <param name="outId">The out id.</param> /// <returns></returns> public decimal GetRate(int inId, int outId) { if (inId == outId) { return(1); } using (var dataContext = new PCSDataContext(Utils.Instance.ConnectionString)) { var rate = dataContext.MST_UMRates.SingleOrDefault(u => u.UnitOfMeasureInID == inId && u.UnitOfMeasureOutID == outId); if (rate == null) { rate = dataContext.MST_UMRates.SingleOrDefault(u => u.UnitOfMeasureInID == outId && u.UnitOfMeasureOutID == inId); return(rate.Scale == null ? 0 : 1 / rate.Scale.GetValueOrDefault(1)); } return(rate.Scale.GetValueOrDefault(0)); } }
//cuonglv public List <Sys_Menu_Entry> GetMenuAllWithImageFields() { List <Sys_Menu_Entry> list = new List <Sys_Menu_Entry>(); using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var l = from obj in db.Sys_Menu_Entries orderby obj.Parent_Shortcut, obj.Button_Caption select obj; if (l != null) { list = l.ToList <Sys_Menu_Entry>(); } } } return(list); }
/// <summary> /// Get all right /// </summary> /// <returns></returns> public List <Sys_Right> GetRightAll() { List <Sys_Right> list = new List <Sys_Right>(); using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var l = from obj in db.Sys_Rights orderby obj.RoleID select obj; if (l != null) { list = l.ToList <Sys_Right>(); } } } return(list); }
/// <summary> /// Delete record by condition /// </summary> public void Delete(object pobjMasterVO, DataSet pdtsDetail) { const string METHOD_NAME = THIS + ".Delete()"; try { var objObject = (PO_InvoiceMasterVO)pobjMasterVO; using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var listData = from objdata in db.PO_InvoiceDetails where objdata.InvoiceMasterID == objObject.InvoiceMasterID select objdata; if (listData.ToArray().Length > 0) { db.PO_InvoiceDetails.DeleteAllOnSubmit(listData.ToList()); db.SubmitChanges(); } var objMaster = db.PO_InvoiceMasters.SingleOrDefault(e => e.InvoiceMasterID == objObject.InvoiceMasterID); if (objMaster != null) { db.PO_InvoiceMasters.DeleteOnSubmit(objMaster); db.SubmitChanges(); } } trans.Complete(); } } catch (SqlException ex) { if (ex.Errors.Count > 1) { if (ex.Number == ErrorCode.SQLCASCADE_PREVENT_KEYCODE) { throw new PCSDBException(ErrorCode.CASCADE_DELETE_PREVENT, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } }
/// <summary> /// Get all Role /// </summary> /// <returns></returns> public List <Sys_Role> GetRoleAll() { List <Sys_Role> list = new List <Sys_Role>(); using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var l = from obj in db.Sys_Roles where obj.Name != Constants.ALL_ROLE orderby obj.RoleID select obj; if (l != null) { list = l.ToList <Sys_Role>(); } } } return(list); }
/// <summary> /// Get All menu /// </summary> /// <returns></returns> public List <Sys_Menu_Entry> GetMenuAll() { List <Sys_Menu_Entry> list = new List <Sys_Menu_Entry>(); using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var l = from obj in db.Sys_Menu_Entries where (obj.Text_CaptionDefault != "-" && (obj.Type == (int)MenuTypeEnum.VisibleBoth || obj.Type == (int)MenuTypeEnum.InvisibleMenu)) orderby obj.Text_CaptionDefault select obj; if (l != null) { list = l.ToList <Sys_Menu_Entry>(); } } } return(list); }
public List <DeliveryScheduleData> GetProduce(DateTime fromDate, DateTime toDate) { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); var query = from dcpDetail in dataContext.PRO_DCPResultDetails join dcpMaster in dataContext.PRO_DCPResultMasters on dcpDetail.DCPResultMasterID equals dcpMaster.DCPResultMasterID join optionMaster in dataContext.PRO_DCOptionMasters on dcpMaster.DCOptionMasterID equals optionMaster.DCOptionMasterID join workCenter in dataContext.MST_WorkCenters on dcpMaster.WorkCenterID equals workCenter.WorkCenterID where optionMaster.AsOfDate <= toDate && optionMaster.AsOfDate >= fromDate select new DeliveryScheduleData { Quantity = dcpDetail.Quantity, ProductId = dcpMaster.ProductID.GetValueOrDefault(0), StartTime = dcpDetail.StartTime, EndTime = dcpDetail.EndTime }; return(query.ToList()); }
/*private void AuditDateFiles(DateTime Date) * { * var PreviousDay = Date.PreviousDay(); * * using (PCSAgentDataContext PCSContext = new PCSAgentDataContext()) * { * foreach (Audit audit in PCSContext.AuditRepository.Get(x => x.TransAuditStatus != (int)AuditStatus.ValidatedCorrect || x.IncidentAuditStatus != (int)AuditStatus.ValidatedCorrect || * x.SessionAuditStatus != (int)AuditStatus.ValidatedCorrect || x.StaffLoginAuditStatus != (int)AuditStatus.ValidatedCorrect) * .Where(x => x.AuditDate >= PreviousDay) * .Take(20)) * { * Log.LogInfoMessage(string.Format("Auditing {0} {1} {2}", audit.Lane.LaneCode, audit.AuditDate.ToShortDateString(), audit.AuditHour)); * * Audit audit_ = audit; // avoid closure issues * DateTime StartDate = audit_.AuditDate.Date; * DateTime EndDate = audit_.AuditDate.Date.AddDays(1); * * var TransactionCount = PCSContext.TransactionRepository.Count(x => x.TransDate.Hour == audit_.AuditHour && x.TransDate > StartDate && x.TransDate < EndDate); * var IncidentCount = PCSContext.IncidentRepository.Count(x => x.IncidentSetDate.Hour == audit_.AuditHour && x.IncidentSetDate > StartDate && x.IncidentSetDate < EndDate); * var LoginsCount = PCSContext.StaffLoginRepository.Count(x => x.StartDate.Hour == audit_.AuditHour && x.StartDate > StartDate && x.StartDate < EndDate); * var SessionCount = PCSContext.SessionRepository.Count(x => x.StartDate.Hour == audit_.AuditHour && x.StartDate > StartDate && x.StartDate < EndDate); * * AuditTransactions(TransactionCount, audit, PCSContext); * AuditIncidents(IncidentCount, audit, PCSContext); * AuditStaffLogins(LoginsCount, audit); * AuditSessions(SessionCount, audit, PCSContext); * } * * PCSContext.Save(); * } * }*/ private static void AuditTransactions(int TransactionCount, PCSAudit _Audit, PCSDataContext _PCSContext) { if (TransactionCount < _Audit.TransRecordCount) { List <int> MissingTransactions = new List <int>(); for (int i = _Audit.TransStartSeqNumber; i <= _Audit.TransEndSeqNumber; i++) { int i_ = i; // avoid closure issues if (!_PCSContext.Transactions.Any(x => x.LaneTransSeqNr == i_ && x.Session.LaneGUID == _Audit.LaneGuid)) { MissingTransactions.Add(i); } } TollDataImportDataRequestClient.RequestDataStatic(int.Parse(_Audit.Lane.LaneCode.Substring(0, 2)), DataTypeRequest.Transaction, MissingTransactions); _Audit.TransAuditStatus = (int)AuditStatus.ValidatedIncorrect; Log.LogInfoMessage(string.Format("Transactions missing between {0}h00 and {1}h00: {2}", _Audit.AuditHour - 1, _Audit.AuditHour, MissingTransactions.Count)); } }
public void DeleteUser(int pintID) { const string METHOD_NAME = "" + ".Delete()"; try { using (var trans = new TransactionScope()) { using (var dcPCS = new PCSDataContext(Utils.Instance.ConnectionString)) { try { dcPCS.Sys_Users.DeleteOnSubmit(dcPCS.Sys_Users.SingleOrDefault(e => e.UserID == pintID)); // submit changes dcPCS.SubmitChanges(); } catch (Exception ex) { throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } } // complete transaction trans.Complete(); } } catch (SqlException ex) { if (ex.Errors.Count > 1) { if (ex.Number == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } }
public void UpdateBeginStock(List <IV_BeginDCPReport> beginDcp, DateTime effectDate, List <ITM_Product> productList) { const string methodName = THIS + ".UpdateBeginStock()"; try { using (var trans = new TransactionScope()) { using (var dataContext = new PCSDataContext(Utils.Instance.ConnectionString)) { var productids = productList.Select(p => p.ProductID.ToString()).ToArray(); var query = string.Join(",", productids); var deleteCommand = string.Format("DELETE FROM IV_BeginDCPReport WHERE effectDate = '{0}' AND ProductID IN ({1})", effectDate.ToString("yyyy-MM-dd"), query); dataContext.ExecuteCommand(deleteCommand); dataContext.IV_BeginDCPReports.InsertAllOnSubmit(beginDcp); // submit changes dataContext.SubmitChanges(); trans.Complete(); } } } catch (SqlException ex) { if (ex.Errors.Count > 1) { if (ex.Number == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, methodName, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } }
public List <DeliveryScheduleData> GetDeliveryForParent(DateTime fromDate, DateTime toDate) { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); var query = from dcpDetail in dataContext.PRO_DCPResultDetails join dcpMaster in dataContext.PRO_DCPResultMasters on dcpDetail.DCPResultMasterID equals dcpMaster.DCPResultMasterID join optionMaster in dataContext.PRO_DCOptionMasters on dcpMaster.DCOptionMasterID equals optionMaster.DCOptionMasterID join bom in dataContext.ITM_BOMs on dcpMaster.ProductID equals bom.ProductID join workCenter in dataContext.MST_WorkCenters on dcpMaster.WorkCenterID equals workCenter.WorkCenterID where optionMaster.AsOfDate <= toDate && optionMaster.AsOfDate >= fromDate select new DeliveryScheduleData { Quantity = (dcpDetail.Quantity * bom.Quantity.GetValueOrDefault(0)) / ((100 - bom.Shrink.GetValueOrDefault(0)) / 100), ProductId = bom.ComponentID, ScheduleDate = dcpDetail.WorkingDate.GetValueOrDefault(DateTime.Now), StartTime = dcpDetail.StartTime, EndTime = dcpDetail.EndTime, LeadTime = bom.LeadTimeOffset, WorkCenterId = workCenter.WorkCenterID }; return(query.ToList()); }
/// <summary> /// Update into Database /// </summary> /// <param name="pobjMaster">The pobj master.</param> /// <param name="pdstDetail">The PDST detail.</param> /// <param name="removedId">The removed id.</param> public void Update(object pobjMaster, DataSet pdstDetail, List <int> removedId) { const string METHOD_NAME = THIS + ".Update()"; try { using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var objObject = (PO_InvoiceMasterVO)pobjMaster; var objMaster = db.PO_InvoiceMasters.SingleOrDefault(e => e.InvoiceMasterID == objObject.InvoiceMasterID); #region update master object if (objMaster != null) { objMaster.InvoiceNo = objObject.InvoiceNo; objMaster.PostDate = objObject.PostDate; objMaster.ExchangeRate = objObject.ExchangeRate; if (objObject.BLDate != DateTime.MinValue) { objMaster.BLDate = objObject.BLDate; } if (objObject.InformDate != DateTime.MinValue) { objMaster.InformDate = objObject.InformDate; } if (objObject.DeclarationDate != DateTime.MinValue) { objMaster.DeclarationDate = objObject.DeclarationDate; } objMaster.BLNumber = objObject.BLNumber; objMaster.TaxInformNumber = objObject.TaxInformNumber; objMaster.TaxDeclarationNumber = objObject.TaxDeclarationNumber; objMaster.TotalInlandAmount = objObject.TotalInlandAmount; objMaster.TotalCIPAmount = objObject.TotalCIPAmount; objMaster.TotalCIFAmount = objObject.TotalCIFAmount; objMaster.TotalImportTax = objObject.TotalImportTax; objMaster.TotalBeforeVATAmount = objObject.TotalBeforeVATAmount; objMaster.TotalVATAmount = objObject.TotalVATAmount; objMaster.CCNID = objObject.CCNID; objMaster.PartyID = objObject.PartyID; objMaster.CurrencyID = objObject.CurrencyID; if (objObject.CarrierID > 0) { objMaster.CarrierID = objObject.CarrierID; } if (objObject.PaymentTermID > 0) { objMaster.PaymentTermID = objObject.PaymentTermID; } if (objObject.DeliveryTermID > 0) { objMaster.DeliveryTermID = objObject.DeliveryTermID; } db.SubmitChanges(); } #endregion #region Delete details foreach (var detailId in removedId) { var detail = db.PO_InvoiceDetails.FirstOrDefault(d => d.InvoiceDetailID == detailId); if (detail == null) { continue; } db.PO_InvoiceDetails.DeleteOnSubmit(detail); } #endregion #region Update detail if (pdstDetail != null) { foreach (DataRow dr in pdstDetail.Tables[0].Rows.Cast <DataRow>().Where(row => row.RowState != DataRowState.Deleted)) { var invoiceDetailId = 0; if (dr[PO_InvoiceDetailTable.INVOICEDETAILID_FLD] != DBNull.Value) { invoiceDetailId = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICEDETAILID_FLD]); } var objDetail = db.PO_InvoiceDetails.SingleOrDefault(e => e.InvoiceDetailID == invoiceDetailId); if (objDetail != null) { #region update detail if (dr[PO_InvoiceDetailTable.INVOICELINE_FLD] != DBNull.Value) { objDetail.InvoiceLine = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICELINE_FLD]); } if (dr[PO_InvoiceDetailTable.INVOICEQUANTITY_FLD] != DBNull.Value) { objDetail.InvoiceQuantity = Convert.ToDecimal(dr[PO_InvoiceDetailTable.INVOICEQUANTITY_FLD]); } if (dr[PO_InvoiceDetailTable.UNITPRICE_FLD] != DBNull.Value) { objDetail.UnitPrice = Convert.ToDecimal(dr[PO_InvoiceDetailTable.UNITPRICE_FLD]); } if (dr[PO_InvoiceDetailTable.VAT_FLD] != DBNull.Value) { objDetail.VAT = Convert.ToDouble(dr[PO_InvoiceDetailTable.VAT_FLD]); } if (dr[PO_InvoiceDetailTable.VATAMOUNT_FLD] != DBNull.Value) { objDetail.VATAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.VATAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.IMPORTTAX_FLD] != DBNull.Value) { objDetail.ImportTax = Convert.ToDouble(dr[PO_InvoiceDetailTable.IMPORTTAX_FLD]); } if (dr[PO_InvoiceDetailTable.IMPORTTAXAMOUNT_FLD] != DBNull.Value) { objDetail.ImportTaxAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.IMPORTTAXAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.INLAND_FLD] != DBNull.Value) { objDetail.Inland = Convert.ToDecimal(dr[PO_InvoiceDetailTable.INLAND_FLD]); } if (dr[PO_InvoiceDetailTable.BEFOREVATAMOUNT_FLD] != DBNull.Value) { objDetail.BeforeVATAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.BEFOREVATAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.CIFAMOUNT_FLD] != DBNull.Value) { // objDetail.CIFAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.CIFAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.CIPAMOUNT_FLD] != DBNull.Value) { objDetail.CIPAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.CIPAMOUNT_FLD]); } objDetail.Note = dr[PO_InvoiceDetailTable.NOTE_FLD].ToString(); if (dr[PO_InvoiceDetailTable.PRODUCTID_FLD] != DBNull.Value) { objDetail.ProductID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PRODUCTID_FLD]); } if (dr[PO_InvoiceDetailTable.PURCHASEORDERMASTERID_FLD] != DBNull.Value) { objDetail.PurchaseOrderMasterID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PURCHASEORDERMASTERID_FLD]); } if (dr[PO_InvoiceDetailTable.PURCHASEORDERDETAILID_FLD] != DBNull.Value) { objDetail.PurchaseOrderDetailID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PURCHASEORDERDETAILID_FLD]); } if (dr[PO_InvoiceDetailTable.DELIVERYSCHEDULEID_FLD] != DBNull.Value) { objDetail.DeliveryScheduleID = Convert.ToInt32(dr[PO_InvoiceDetailTable.DELIVERYSCHEDULEID_FLD]); } if (dr[PO_InvoiceDetailTable.INVOICEUMID_FLD] != DBNull.Value) { objDetail.InvoiceUMID = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICEUMID_FLD]); } #endregion } else { #region create new detail objDetail = new PO_InvoiceDetail { InvoiceMasterID = objMaster.InvoiceMasterID }; if (dr[PO_InvoiceDetailTable.INVOICELINE_FLD] != DBNull.Value) { objDetail.InvoiceLine = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICELINE_FLD]); } if (dr[PO_InvoiceDetailTable.INVOICEQUANTITY_FLD] != DBNull.Value) { objDetail.InvoiceQuantity = Convert.ToDecimal(dr[PO_InvoiceDetailTable.INVOICEQUANTITY_FLD]); } if (dr[PO_InvoiceDetailTable.UNITPRICE_FLD] != DBNull.Value) { objDetail.UnitPrice = Convert.ToDecimal(dr[PO_InvoiceDetailTable.UNITPRICE_FLD]); } if (dr[PO_InvoiceDetailTable.VAT_FLD] != DBNull.Value) { objDetail.VAT = Convert.ToDouble(dr[PO_InvoiceDetailTable.VAT_FLD]); } if (dr[PO_InvoiceDetailTable.VATAMOUNT_FLD] != DBNull.Value) { objDetail.VATAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.VATAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.IMPORTTAX_FLD] != DBNull.Value) { objDetail.ImportTax = Convert.ToDouble(dr[PO_InvoiceDetailTable.IMPORTTAX_FLD]); } if (dr[PO_InvoiceDetailTable.IMPORTTAXAMOUNT_FLD] != DBNull.Value) { objDetail.ImportTaxAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.IMPORTTAXAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.INLAND_FLD] != DBNull.Value) { objDetail.Inland = Convert.ToDecimal(dr[PO_InvoiceDetailTable.INLAND_FLD]); } if (dr[PO_InvoiceDetailTable.BEFOREVATAMOUNT_FLD] != DBNull.Value) { objDetail.BeforeVATAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.BEFOREVATAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.CIFAMOUNT_FLD] != DBNull.Value) { objDetail.CIFAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.CIFAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.CIPAMOUNT_FLD] != DBNull.Value) { objDetail.CIPAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.CIPAMOUNT_FLD]); } objDetail.Note = dr[PO_InvoiceDetailTable.NOTE_FLD].ToString(); if (dr[PO_InvoiceDetailTable.PRODUCTID_FLD] != DBNull.Value) { objDetail.ProductID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PRODUCTID_FLD]); } if (dr[PO_InvoiceDetailTable.PURCHASEORDERMASTERID_FLD] != DBNull.Value) { objDetail.PurchaseOrderMasterID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PURCHASEORDERMASTERID_FLD]); } if (dr[PO_InvoiceDetailTable.PURCHASEORDERDETAILID_FLD] != DBNull.Value) { objDetail.PurchaseOrderDetailID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PURCHASEORDERDETAILID_FLD]); } if (dr[PO_InvoiceDetailTable.DELIVERYSCHEDULEID_FLD] != DBNull.Value) { objDetail.DeliveryScheduleID = Convert.ToInt32(dr[PO_InvoiceDetailTable.DELIVERYSCHEDULEID_FLD]); } if (dr[PO_InvoiceDetailTable.INVOICEUMID_FLD] != DBNull.Value) { objDetail.InvoiceUMID = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICEUMID_FLD]); } db.PO_InvoiceDetails.InsertOnSubmit(objDetail); #endregion } } } #endregion db.SubmitChanges(); trans.Complete(); } } } catch (SqlException ex) { if (ex.Errors.Count > 1) { if (ex.Number == ErrorCode.SQLCASCADE_PREVENT_KEYCODE) { throw new PCSDBException(ErrorCode.CASCADE_DELETE_PREVENT, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } }
public List <PRO_DCOptionMaster> ListCycle(DateTime year) { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); return(dataContext.PRO_DCOptionMasters.Where(c => c.AsOfDate.GetValueOrDefault(DateTime.Now).Year == year.Year).ToList()); }
public int AddAndReturn(object pvoInvoiceMaster, DataSet pdstDetail) { const string METHOD_NAME = THIS + ".AddAndReturnID()"; PO_InvoiceMaster objMaster = new PO_InvoiceMaster(); try { using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { #region Insert Master PO_InvoiceMasterVO objObject = (PO_InvoiceMasterVO)pvoInvoiceMaster; objMaster.InvoiceNo = objObject.InvoiceNo; objMaster.PostDate = objObject.PostDate; objMaster.ExchangeRate = objObject.ExchangeRate; if (objObject.BLDate != DateTime.MinValue) { objMaster.BLDate = objObject.BLDate; } //objMaster.InvoiceNo=objObject.InvoiceNo; //objMaster.PostDate=objObject.PostDate; if (objObject.InformDate != DateTime.MinValue) { objMaster.InformDate = objObject.InformDate; } if (objObject.DeclarationDate != DateTime.MinValue) { objMaster.DeclarationDate = objObject.DeclarationDate; } objMaster.BLNumber = objObject.BLNumber; objMaster.TaxInformNumber = objObject.TaxInformNumber; objMaster.TaxDeclarationNumber = objObject.TaxDeclarationNumber; objMaster.TotalInlandAmount = objObject.TotalInlandAmount; objMaster.TotalCIPAmount = objObject.TotalCIPAmount; objMaster.TotalCIFAmount = objObject.TotalCIFAmount; objMaster.TotalImportTax = objObject.TotalImportTax; objMaster.TotalBeforeVATAmount = objObject.TotalBeforeVATAmount; objMaster.TotalVATAmount = objObject.TotalVATAmount; objMaster.CCNID = objObject.CCNID; objMaster.PartyID = objObject.PartyID; objMaster.CurrencyID = objObject.CurrencyID; if (objObject.CarrierID > 0) { objMaster.CarrierID = objObject.CarrierID; } if (objObject.PaymentTermID > 0) { objMaster.PaymentTermID = objObject.PaymentTermID; } if (objObject.DeliveryTermID > 0) { objMaster.DeliveryTermID = objObject.DeliveryTermID; } db.PO_InvoiceMasters.InsertOnSubmit(objMaster); db.SubmitChanges(); #endregion foreach (DataRow objRow in pdstDetail.Tables[0].Rows) { if (objRow.RowState == DataRowState.Deleted) { continue; } objRow[PO_InvoiceDetailTable.INVOICEMASTERID_FLD] = objMaster.InvoiceMasterID; } #region Insert Detail List <PO_InvoiceDetail> listDetail = new List <PO_InvoiceDetail>(); //PO_InvoiceDetailDS dsDetail = new PO_InvoiceDetailDS(); //dsDetail.UpdateDataSet(pdstDetail); if (pdstDetail != null && pdstDetail.Tables.Count > 0) { foreach (DataRow dr in pdstDetail.Tables[0].Rows) { try { PO_InvoiceDetail objDetail = new PO_InvoiceDetail(); objDetail.InvoiceDetailID = 0; if (dr[PO_InvoiceDetailTable.INVOICELINE_FLD] != DBNull.Value) { objDetail.InvoiceLine = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICELINE_FLD]); } if (dr[PO_InvoiceDetailTable.INVOICEMASTERID_FLD] != DBNull.Value) { objDetail.InvoiceMasterID = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICEMASTERID_FLD]); } if (dr[PO_InvoiceDetailTable.INVOICEQUANTITY_FLD] != DBNull.Value) { objDetail.InvoiceQuantity = Convert.ToDecimal(dr[PO_InvoiceDetailTable.INVOICEQUANTITY_FLD]); } if (dr[PO_InvoiceDetailTable.UNITPRICE_FLD] != DBNull.Value) { objDetail.UnitPrice = Convert.ToDecimal(dr[PO_InvoiceDetailTable.UNITPRICE_FLD]); } if (dr[PO_InvoiceDetailTable.VAT_FLD] != DBNull.Value) { objDetail.VAT = Convert.ToDouble(dr[PO_InvoiceDetailTable.VAT_FLD]); } // if (dr[PO_InvoiceDetailTable.VATAMOUNT_FLD] != DBNull.Value) { objDetail.VATAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.VATAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.IMPORTTAX_FLD] != DBNull.Value) { objDetail.ImportTax = Convert.ToDouble(dr[PO_InvoiceDetailTable.IMPORTTAX_FLD]); } if (dr[PO_InvoiceDetailTable.IMPORTTAXAMOUNT_FLD] != DBNull.Value) { objDetail.ImportTaxAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.IMPORTTAXAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.INLAND_FLD] != DBNull.Value) { objDetail.Inland = Convert.ToDecimal(dr[PO_InvoiceDetailTable.INLAND_FLD]); } if (dr[PO_InvoiceDetailTable.BEFOREVATAMOUNT_FLD] != DBNull.Value) { objDetail.BeforeVATAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.BEFOREVATAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.CIFAMOUNT_FLD] != DBNull.Value) { // objDetail.CIFAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.CIFAMOUNT_FLD]); } if (dr[PO_InvoiceDetailTable.CIPAMOUNT_FLD] != DBNull.Value) { objDetail.CIPAmount = Convert.ToDecimal(dr[PO_InvoiceDetailTable.CIPAMOUNT_FLD]); } objDetail.Note = dr[PO_InvoiceDetailTable.NOTE_FLD].ToString(); if (dr[PO_InvoiceDetailTable.PRODUCTID_FLD] != DBNull.Value) { objDetail.ProductID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PRODUCTID_FLD]); } if (dr[PO_InvoiceDetailTable.PURCHASEORDERMASTERID_FLD] != DBNull.Value) { objDetail.PurchaseOrderMasterID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PURCHASEORDERMASTERID_FLD]); } if (dr[PO_InvoiceDetailTable.PURCHASEORDERDETAILID_FLD] != DBNull.Value) { objDetail.PurchaseOrderDetailID = Convert.ToInt32(dr[PO_InvoiceDetailTable.PURCHASEORDERDETAILID_FLD]); } if (dr[PO_InvoiceDetailTable.DELIVERYSCHEDULEID_FLD] != DBNull.Value) { objDetail.DeliveryScheduleID = Convert.ToInt32(dr[PO_InvoiceDetailTable.DELIVERYSCHEDULEID_FLD]); } if (dr[PO_InvoiceDetailTable.INVOICEUMID_FLD] != DBNull.Value) { objDetail.InvoiceUMID = Convert.ToInt32(dr[PO_InvoiceDetailTable.INVOICEUMID_FLD]); } listDetail.Add(objDetail); } catch { } } db.PO_InvoiceDetails.InsertAllOnSubmit(listDetail); db.SubmitChanges(); } #endregion trans.Complete(); } } return(objMaster.InvoiceMasterID); } catch (PCSBOException ex) { if (ex.mCode == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, METHOD_NAME, ex); } if (ex.mCode == ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE) { throw new PCSDBException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, METHOD_NAME, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, METHOD_NAME, ex); } }
/// <summary> /// Deletes the transaction. /// </summary> /// <param name="miscIssueMasterId">The misc issue master id.</param> public void DeleteTransaction(int miscIssueMasterId) { const string methodName = This + ".DeleteTransaction()"; try { using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var miscTranTypeId = db.MST_TranTypes.FirstOrDefault(t => t.Code == TransactionTypeEnum.IVMiscellaneousIssue.ToString()).TranTypeID; var deleteTranTypeId = db.MST_TranTypes.FirstOrDefault(t => t.Code == TransactionTypeEnum.DeleteTransaction.ToString()).TranTypeID; var serverDate = db.GetServerDate(); #region IV_MiscellaneousIssueMaster var issueMaster = db.IV_MiscellaneousIssueMasters.FirstOrDefault(e => e.MiscellaneousIssueMasterID == miscIssueMasterId); if (issueMaster == null) { return; } #endregion #region old transaction history to be updated var oldSourceHistory = db.MST_TransactionHistories.Where(e => e.RefMasterID == miscIssueMasterId && e.TranTypeID == miscTranTypeId); foreach (var history in oldSourceHistory) { // mark as delete transaction history.TranTypeID = deleteTranTypeId; history.UserName = SystemProperty.UserName; } #endregion #region cache data foreach (IV_MiscellaneousIssueDetail issueDetail in issueMaster.IV_MiscellaneousIssueDetails) { var allowNegative = issueDetail.ITM_Product.AllowNegativeQty.GetValueOrDefault(false); #region subtract from destionation cache if (issueMaster.DesMasLocationID.GetValueOrDefault(0) > 0) { #region bin cache var destBin = db.IV_BinCaches.FirstOrDefault(e => e.LocationID == issueMaster.DesLocationID && e.BinID == issueMaster.DesBinID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (destBin == null || destBin.OHQuantity.GetValueOrDefault(0) < issueDetail.Quantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, destBin == null ? 0 : destBin.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (destBin != null) { destBin.OHQuantity = destBin.OHQuantity.GetValueOrDefault(0) - issueDetail.Quantity; } else { // create new record destBin = new IV_BinCache { BinID = issueMaster.DesBinID.GetValueOrDefault(0), CCNID = issueMaster.CCNID, LocationID = issueMaster.DesLocationID.GetValueOrDefault(0), MasterLocationID = issueMaster.DesMasLocationID.GetValueOrDefault(0), ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.Quantity }; db.IV_BinCaches.InsertOnSubmit(destBin); } #endregion #region location cache var destLocation = db.IV_LocationCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.DesMasLocationID && e.LocationID == issueMaster.DesLocationID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (destLocation == null || destLocation.OHQuantity.GetValueOrDefault(0) < issueDetail.Quantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, destLocation == null ? 0 : destLocation.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (destLocation != null) { destLocation.OHQuantity = destLocation.OHQuantity.GetValueOrDefault(0) - issueDetail.Quantity; } else { // create new record destLocation = new IV_LocationCache { CCNID = issueMaster.CCNID, LocationID = issueMaster.DesLocationID.GetValueOrDefault(0), MasterLocationID = issueMaster.DesMasLocationID.GetValueOrDefault(0), ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.Quantity }; db.IV_LocationCaches.InsertOnSubmit(destLocation); } #endregion #region master location cache var destMasLocation = db.IV_MasLocCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.DesMasLocationID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (destMasLocation == null || destMasLocation.OHQuantity.GetValueOrDefault(0) < issueDetail.Quantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, destMasLocation == null ? 0 : destMasLocation.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (destMasLocation != null) { destMasLocation.OHQuantity = destMasLocation.OHQuantity.GetValueOrDefault(0) - issueDetail.Quantity; } else { // create new record destMasLocation = new IV_MasLocCache { CCNID = issueMaster.CCNID, MasterLocationID = issueMaster.DesMasLocationID.GetValueOrDefault(0), ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.Quantity }; db.IV_MasLocCaches.InsertOnSubmit(destMasLocation); } #endregion #region Transaction history var destHistory = new MST_TransactionHistory { CCNID = issueMaster.CCNID, StockUMID = issueDetail.StockUMID, MasterLocationID = issueMaster.DesMasLocationID.GetValueOrDefault(0), ProductID = issueDetail.ProductID, LocationID = issueMaster.DesLocationID, BinID = issueMaster.DesBinID, RefMasterID = issueMaster.MiscellaneousIssueMasterID, RefDetailID = issueDetail.MiscellaneousIssueDetailID, PostDate = issueMaster.PostDate, TransDate = serverDate, Quantity = -issueDetail.Quantity, UserName = SystemProperty.UserName, TranTypeID = miscTranTypeId, BinCommitQuantity = destBin.CommitQuantity, BinOHQuantity = destBin.OHQuantity, IssuePurposeID = issueMaster.IssuePurposeID, LocationCommitQuantity = destLocation.CommitQuantity, LocationOHQuantity = destLocation.OHQuantity, MasLocCommitQuantity = destMasLocation.CommitQuantity, MasLocOHQuantity = destMasLocation.OHQuantity }; db.MST_TransactionHistories.InsertOnSubmit(destHistory); #endregion } #endregion #region add to source cache #region bin cache var sourceBin = db.IV_BinCaches.FirstOrDefault(e => e.LocationID == issueMaster.SourceLocationID && e.BinID == issueMaster.SourceBinID && e.ProductID == issueDetail.ProductID); if (sourceBin != null) { sourceBin.OHQuantity = sourceBin.OHQuantity.GetValueOrDefault(0) + issueDetail.Quantity; } else { // create new record sourceBin = new IV_BinCache { BinID = issueMaster.SourceBinID.GetValueOrDefault(0), CCNID = issueMaster.CCNID, LocationID = issueMaster.SourceLocationID, MasterLocationID = issueMaster.SourceMasLocationID, ProductID = issueDetail.ProductID, OHQuantity = issueDetail.Quantity }; db.IV_BinCaches.InsertOnSubmit(sourceBin); } #endregion #region location cache var sourceLocation = db.IV_LocationCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.SourceMasLocationID && e.LocationID == issueMaster.SourceLocationID && e.ProductID == issueDetail.ProductID); if (sourceLocation != null) { sourceLocation.OHQuantity = sourceLocation.OHQuantity.GetValueOrDefault(0) + issueDetail.Quantity; } else { // create new record sourceLocation = new IV_LocationCache { CCNID = issueMaster.CCNID, LocationID = issueMaster.SourceLocationID, MasterLocationID = issueMaster.SourceMasLocationID, ProductID = issueDetail.ProductID, OHQuantity = issueDetail.Quantity }; db.IV_LocationCaches.InsertOnSubmit(sourceLocation); } #endregion #region master location cache var sourceMasLocation = db.IV_MasLocCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.SourceMasLocationID && e.ProductID == issueDetail.ProductID); if (sourceMasLocation != null) { sourceMasLocation.OHQuantity = sourceMasLocation.OHQuantity.GetValueOrDefault(0) + issueDetail.Quantity; } else { // create new record sourceMasLocation = new IV_MasLocCache { CCNID = issueMaster.CCNID, MasterLocationID = issueMaster.SourceMasLocationID, ProductID = issueDetail.ProductID, OHQuantity = issueDetail.Quantity }; db.IV_MasLocCaches.InsertOnSubmit(sourceMasLocation); } #endregion #region Transaction history var sourceHistory = new MST_TransactionHistory { CCNID = issueMaster.CCNID, StockUMID = issueDetail.StockUMID, MasterLocationID = issueMaster.SourceMasLocationID, ProductID = issueDetail.ProductID, LocationID = issueMaster.SourceLocationID, BinID = issueMaster.SourceBinID, RefMasterID = issueMaster.MiscellaneousIssueMasterID, RefDetailID = issueDetail.MiscellaneousIssueDetailID, PostDate = issueMaster.PostDate, TransDate = serverDate, Quantity = issueDetail.Quantity, UserName = SystemProperty.UserName, TranTypeID = miscTranTypeId, BinCommitQuantity = sourceBin.CommitQuantity, BinOHQuantity = sourceBin.OHQuantity, IssuePurposeID = issueMaster.IssuePurposeID, LocationCommitQuantity = sourceLocation.CommitQuantity, LocationOHQuantity = sourceLocation.OHQuantity, MasLocCommitQuantity = sourceMasLocation.CommitQuantity, MasLocOHQuantity = sourceMasLocation.OHQuantity }; db.MST_TransactionHistories.InsertOnSubmit(sourceHistory); #endregion #endregion db.IV_MiscellaneousIssueDetails.DeleteOnSubmit(issueDetail); } #endregion db.IV_MiscellaneousIssueMasters.DeleteOnSubmit(issueMaster); db.SubmitChanges(); trans.Complete(); } } } catch (PCSBOException ex) { if (ex.mCode == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, methodName, ex); } if (ex.mCode == ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE) { throw; } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } }
/// <summary> /// Adds the and return id. /// </summary> /// <param name="pobjMaster">The pobj master.</param> /// <param name="pdstData">The PDST data.</param> /// <param name="serverDate">The server date.</param> /// <returns></returns> public int AddAndReturnId(object pobjMaster, DataSet pdstData, DateTime serverDate) { const string methodName = This + ".AddAndReturnId()"; try { using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var miscTranTypeId = db.MST_TranTypes.FirstOrDefault(t => t.Code == TransactionTypeEnum.IVMiscellaneousIssue.ToString()).TranTypeID; #region IV_MiscellaneousIssueMaster var issueMaster = new IV_MiscellaneousIssueMaster(); var pobjMasterVO = (IV_MiscellaneousIssueMasterVO)pobjMaster; issueMaster.CCNID = pobjMasterVO.CCNID; issueMaster.Comment = pobjMasterVO.Comment; if (pobjMasterVO.DesBinID > 0) { issueMaster.DesBinID = pobjMasterVO.DesBinID; } if (pobjMasterVO.DesLocationID > 0) { issueMaster.DesLocationID = pobjMasterVO.DesLocationID; } if (pobjMasterVO.DesMasLocationID > 0) { issueMaster.DesMasLocationID = pobjMasterVO.DesMasLocationID; } issueMaster.IssuePurposeID = pobjMasterVO.IssuePurposeID; issueMaster.PartyID = null; issueMaster.PostDate = pobjMasterVO.PostDate; issueMaster.SourceBinID = pobjMasterVO.SourceBinID; issueMaster.SourceLocationID = pobjMasterVO.SourceLocationID; issueMaster.SourceMasLocationID = pobjMasterVO.SourceMasLocationID; issueMaster.TransNo = pobjMasterVO.TransNo; issueMaster.UserName = SystemProperty.UserName; issueMaster.LastChange = serverDate; #endregion #region Insert IV_MiscellaneousIssueDetail foreach (DataRow dr in pdstData.Tables[0].Rows) { if (dr.RowState == DataRowState.Deleted) { continue; } var objDetail = new IV_MiscellaneousIssueDetail { ProductID = Convert.ToInt32(dr[IV_MiscellaneousIssueDetailTable.PRODUCTID_FLD]), Quantity = Convert.ToDecimal(dr[IV_MiscellaneousIssueDetailTable.QUANTITY_FLD]), StockUMID = Convert.ToInt32(dr[IV_MiscellaneousIssueDetailTable.STOCKUMID_FLD]) }; if (dr[IV_MiscellaneousIssueDetailTable.LOT_FLD] != DBNull.Value) { objDetail.Lot = dr[IV_MiscellaneousIssueDetailTable.LOT_FLD].ToString(); } if (dr[IV_MiscellaneousIssueDetailTable.AVAILABLEQTY_FLD] != DBNull.Value) { objDetail.AvailableQty = Convert.ToDecimal(dr[IV_MiscellaneousIssueDetailTable.AVAILABLEQTY_FLD]); } issueMaster.IV_MiscellaneousIssueDetails.Add(objDetail); } // temporary save master and detail to database db.IV_MiscellaneousIssueMasters.InsertOnSubmit(issueMaster); db.SubmitChanges(); #endregion #region cache data foreach (var issueDetail in issueMaster.IV_MiscellaneousIssueDetails) { var allowNegative = issueDetail.ITM_Product.AllowNegativeQty.GetValueOrDefault(false); #region subtract from source cache #region bin cache var sourceBin = db.IV_BinCaches.FirstOrDefault(e => e.LocationID == issueMaster.SourceLocationID && e.BinID == issueMaster.SourceBinID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (sourceBin == null || sourceBin.OHQuantity.GetValueOrDefault(0) < issueDetail.Quantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, sourceBin == null ? 0 : sourceBin.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (sourceBin != null) { sourceBin.OHQuantity = sourceBin.OHQuantity.GetValueOrDefault(0) - issueDetail.Quantity; } else { // create new record sourceBin = new IV_BinCache { BinID = issueMaster.SourceBinID.GetValueOrDefault(0), CCNID = issueMaster.CCNID, LocationID = issueMaster.SourceLocationID, MasterLocationID = issueMaster.SourceMasLocationID, ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.Quantity }; db.IV_BinCaches.InsertOnSubmit(sourceBin); } #endregion #region location cache var sourceLocation = db.IV_LocationCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.SourceMasLocationID && e.LocationID == issueMaster.SourceLocationID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (sourceLocation == null || sourceLocation.OHQuantity.GetValueOrDefault(0) < issueDetail.Quantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, sourceLocation == null ? 0 : sourceLocation.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (sourceLocation != null) { sourceLocation.OHQuantity = sourceLocation.OHQuantity.GetValueOrDefault(0) - issueDetail.Quantity; } else { // create new record sourceLocation = new IV_LocationCache { CCNID = issueMaster.CCNID, LocationID = issueMaster.SourceLocationID, MasterLocationID = issueMaster.SourceMasLocationID, ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.Quantity }; db.IV_LocationCaches.InsertOnSubmit(sourceLocation); } #endregion #region master location cache var sourceMasLocation = db.IV_MasLocCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.SourceMasLocationID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (sourceMasLocation == null || sourceMasLocation.OHQuantity.GetValueOrDefault(0) < issueDetail.Quantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, sourceMasLocation == null ? 0 : sourceMasLocation.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (sourceMasLocation != null) { sourceMasLocation.OHQuantity = sourceMasLocation.OHQuantity.GetValueOrDefault(0) - issueDetail.Quantity; } else { // create new record sourceMasLocation = new IV_MasLocCache { CCNID = issueMaster.CCNID, MasterLocationID = issueMaster.SourceMasLocationID, ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.Quantity }; db.IV_MasLocCaches.InsertOnSubmit(sourceMasLocation); } #endregion #region Transaction history var sourceHistory = new MST_TransactionHistory { CCNID = pobjMasterVO.CCNID, StockUMID = issueDetail.StockUMID, MasterLocationID = pobjMasterVO.SourceMasLocationID, ProductID = issueDetail.ProductID, LocationID = pobjMasterVO.SourceLocationID, BinID = pobjMasterVO.SourceBinID, RefMasterID = issueMaster.MiscellaneousIssueMasterID, RefDetailID = issueDetail.MiscellaneousIssueDetailID, PostDate = pobjMasterVO.PostDate, TransDate = serverDate, Quantity = -issueDetail.Quantity, UserName = SystemProperty.UserName, TranTypeID = miscTranTypeId, BinCommitQuantity = sourceBin.CommitQuantity, BinOHQuantity = sourceBin.OHQuantity, IssuePurposeID = issueMaster.IssuePurposeID, LocationCommitQuantity = sourceLocation.CommitQuantity, LocationOHQuantity = sourceLocation.OHQuantity, MasLocCommitQuantity = sourceMasLocation.CommitQuantity, MasLocOHQuantity = sourceMasLocation.OHQuantity }; db.MST_TransactionHistories.InsertOnSubmit(sourceHistory); #endregion #endregion #region add to destination cache if (issueMaster.DesMasLocationID.GetValueOrDefault(0) > 0) { #region bin cache var destBin = db.IV_BinCaches.FirstOrDefault(e => e.LocationID == issueMaster.DesLocationID && e.BinID == issueMaster.DesBinID && e.ProductID == issueDetail.ProductID); if (destBin != null) { destBin.OHQuantity = destBin.OHQuantity.GetValueOrDefault(0) + issueDetail.Quantity; } else { // create new record destBin = new IV_BinCache { BinID = issueMaster.DesBinID.GetValueOrDefault(0), CCNID = issueMaster.CCNID, LocationID = issueMaster.DesLocationID.GetValueOrDefault(0), MasterLocationID = issueMaster.DesMasLocationID.GetValueOrDefault(0), ProductID = issueDetail.ProductID, OHQuantity = issueDetail.Quantity }; db.IV_BinCaches.InsertOnSubmit(destBin); } #endregion #region location cache var destLocation = db.IV_LocationCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.DesMasLocationID && e.LocationID == issueMaster.DesLocationID && e.ProductID == issueDetail.ProductID); if (destLocation != null) { destLocation.OHQuantity = destLocation.OHQuantity.GetValueOrDefault(0) + issueDetail.Quantity; } else { // create new record destLocation = new IV_LocationCache { CCNID = issueMaster.CCNID, LocationID = issueMaster.DesLocationID.GetValueOrDefault(0), MasterLocationID = issueMaster.DesMasLocationID.GetValueOrDefault(0), ProductID = issueDetail.ProductID, OHQuantity = issueDetail.Quantity }; db.IV_LocationCaches.InsertOnSubmit(destLocation); } #endregion #region master location cache var destMasLocation = db.IV_MasLocCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.DesMasLocationID && e.ProductID == issueDetail.ProductID); if (destMasLocation != null) { destMasLocation.OHQuantity = destMasLocation.OHQuantity.GetValueOrDefault(0) + issueDetail.Quantity; } else { // create new record destMasLocation = new IV_MasLocCache { CCNID = issueMaster.CCNID, MasterLocationID = issueMaster.DesMasLocationID.GetValueOrDefault(0), ProductID = issueDetail.ProductID, OHQuantity = issueDetail.Quantity }; db.IV_MasLocCaches.InsertOnSubmit(destMasLocation); } #endregion #region Transaction history var destHistory = new MST_TransactionHistory { CCNID = pobjMasterVO.CCNID, StockUMID = issueDetail.StockUMID, MasterLocationID = pobjMasterVO.DesMasLocationID, ProductID = issueDetail.ProductID, LocationID = pobjMasterVO.DesLocationID, BinID = pobjMasterVO.DesBinID, RefMasterID = issueMaster.MiscellaneousIssueMasterID, RefDetailID = issueDetail.MiscellaneousIssueDetailID, PostDate = pobjMasterVO.PostDate, TransDate = serverDate, Quantity = issueDetail.Quantity, UserName = SystemProperty.UserName, TranTypeID = miscTranTypeId, BinCommitQuantity = destBin.CommitQuantity, BinOHQuantity = destBin.OHQuantity, IssuePurposeID = issueMaster.IssuePurposeID, LocationCommitQuantity = destLocation.CommitQuantity, LocationOHQuantity = destLocation.OHQuantity, MasLocCommitQuantity = destMasLocation.CommitQuantity, MasLocOHQuantity = destMasLocation.OHQuantity }; db.MST_TransactionHistories.InsertOnSubmit(destHistory); #endregion } #endregion } #endregion db.SubmitChanges(); trans.Complete(); return(issueMaster.MiscellaneousIssueMasterID); } } } catch (PCSBOException ex) { if (ex.mCode == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, methodName, ex); } if (ex.mCode == ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE) { throw; } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } }
/// <summary> /// Adjusts the purchase orders. /// </summary> /// <param name="fromDate">From date.</param> /// <param name="toDate">To date.</param> /// <param name="partyId"></param> public void AdjustPurchaseOrder(DateTime fromDate, DateTime toDate, int?partyId) { var methodName = GetType().FullName + ".UpdateCPODataset()"; try { using (var trans = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted })) { using (var dataContext = new PCSDataContext(Utils.Instance.ConnectionString)) { var serverDate = dataContext.GetServerDate(); var newDeliveries = new List <PO_DeliverySchedule>(); var newDetails = new List <PO_PurchaseOrderDetail>(); var updatedDetail = new List <int>(); // find all purchase orders in range was approved var approvedPOs = (from orderDetail in dataContext.PO_PurchaseOrderDetails join orderMaster in dataContext.PO_PurchaseOrderMasters on orderDetail.PurchaseOrderMasterID equals orderMaster.PurchaseOrderMasterID join schedule in dataContext.PO_DeliverySchedules on orderDetail.PurchaseOrderDetailID equals schedule.PurchaseOrderDetailID where orderDetail.ApproverID.GetValueOrDefault(0) > 0 && schedule.ScheduleDate.CompareTo(fromDate) >= 0 && schedule.ScheduleDate.CompareTo(toDate) <= 0 && schedule.ReceivedQuantity.GetValueOrDefault(0) == 0 && partyId.GetValueOrDefault(0) > 0 ? orderMaster.PartyID == partyId.GetValueOrDefault(0) : orderMaster.PartyID > 0 select new { orderMaster.PartyID, orderMaster.PurchaseOrderMasterID, orderDetail.PurchaseOrderDetailID, orderDetail.ProductID, schedule.DeliveryScheduleID, schedule.ScheduleDate, schedule.DeliveryQuantity }).ToList(); // find all un-approved purchase orders in range var unApprovedPOs = (from orderDetail in dataContext.PO_PurchaseOrderDetails join orderMaster in dataContext.PO_PurchaseOrderMasters on orderDetail.PurchaseOrderMasterID equals orderMaster.PurchaseOrderMasterID join schedule in dataContext.PO_DeliverySchedules on orderDetail.PurchaseOrderDetailID equals schedule.PurchaseOrderDetailID where orderDetail.ApproverID.GetValueOrDefault(0) == 0 && schedule.ScheduleDate.CompareTo(fromDate) >= 0 && schedule.ScheduleDate.CompareTo(toDate) <= 0 && partyId.GetValueOrDefault(0) > 0 ? orderMaster.PartyID == partyId.GetValueOrDefault(0) : orderMaster.PartyID > 0 select new { orderMaster.PartyID, orderMaster.PurchaseOrderMasterID, orderDetail.PurchaseOrderDetailID, orderDetail.ProductID, schedule.DeliveryScheduleID, schedule.ScheduleDate, schedule.DeliveryQuantity }).ToList(); foreach (var approvedPO in approvedPOs) { #region find new delivery with same schedule date var delivery = dataContext.PO_DeliverySchedules.FirstOrDefault(d => d.DeliveryScheduleID == approvedPO.DeliveryScheduleID); var newDelivery = unApprovedPOs.FirstOrDefault(e => e.PartyID == approvedPO.PartyID && e.ProductID == approvedPO.ProductID && e.ScheduleDate.Equals(approvedPO.ScheduleDate)); if (newDelivery != null) { delivery.Adjustment = newDelivery.DeliveryQuantity - delivery.DeliveryQuantity; delivery.DeliveryQuantity = newDelivery.DeliveryQuantity; } else { // old delivery does not exist in new schedules delivery.Adjustment = -delivery.DeliveryQuantity; delivery.DeliveryQuantity = 0; } if (!updatedDetail.Contains(delivery.PurchaseOrderDetailID)) { updatedDetail.Add(delivery.PurchaseOrderDetailID); } #endregion } // new delivery schedule does not exist in current schedules foreach (var unApprovedPO in unApprovedPOs) { var approvedSchedule = approvedPOs.FirstOrDefault( d => d.PartyID == unApprovedPO.PartyID && d.ProductID == unApprovedPO.ProductID && d.ScheduleDate == unApprovedPO.ScheduleDate); if (approvedSchedule == null) { var approvedPO = approvedPOs.FirstOrDefault(d => d.PartyID == unApprovedPO.PartyID && d.ProductID == unApprovedPO.ProductID); if (approvedPO != null) { // check in new local list if we insert it or not if (newDeliveries.Any(d => d.PO_PurchaseOrderDetail.ProductID == unApprovedPO.ProductID && d.PO_PurchaseOrderDetail.PO_PurchaseOrderMaster.PartyID == unApprovedPO.PartyID && d.ScheduleDate == unApprovedPO.ScheduleDate)) { continue; } var poDetail = dataContext.PO_PurchaseOrderDetails.FirstOrDefault(p => p.PurchaseOrderDetailID == approvedPO.PurchaseOrderDetailID); var maxDeliveryLine = poDetail.PO_DeliverySchedules.Max(d => d.DeliveryLine); var newSchedule = new PO_DeliverySchedule { DeliveryQuantity = unApprovedPO.DeliveryQuantity, Adjustment = unApprovedPO.DeliveryQuantity, PurchaseOrderDetailID = poDetail.PurchaseOrderDetailID, ScheduleDate = unApprovedPO.ScheduleDate, DeliveryLine = maxDeliveryLine == 0 ? 1 : maxDeliveryLine + 1 }; if (!updatedDetail.Contains(poDetail.PurchaseOrderDetailID)) { updatedDetail.Add(poDetail.PurchaseOrderDetailID); } // add new delivery schedule to po detail poDetail.PO_DeliverySchedules.Add(newSchedule); // add to local list newDeliveries.Add(newSchedule); } else // need to add new purchase order detail and its delivery schedules { // check in new local list if we insert it or not if (newDetails.Any(d => d.ProductID == unApprovedPO.ProductID && d.PO_PurchaseOrderMaster.PartyID == unApprovedPO.PartyID)) { continue; } var unApprovedDetail = dataContext.PO_PurchaseOrderDetails.FirstOrDefault(p => p.PurchaseOrderDetailID == unApprovedPO.PurchaseOrderDetailID); var approvedMaster = approvedPOs.FirstOrDefault(p => p.PartyID == unApprovedPO.PartyID); var poMaster = dataContext.PO_PurchaseOrderMasters.FirstOrDefault(p => p.PurchaseOrderMasterID == approvedMaster.PurchaseOrderMasterID); var maxLine = poMaster.PO_PurchaseOrderDetails.Max(d => d.Line); // product in new order does not exists in current order var newOrderDetail = new PO_PurchaseOrderDetail { ProductID = unApprovedDetail.ProductID, BuyingUMID = unApprovedDetail.BuyingUMID, DiscountAmount = unApprovedDetail.DiscountAmount, ImportTax = unApprovedDetail.ImportTax, NetAmount = unApprovedDetail.NetAmount, OrderQuantity = unApprovedDetail.OrderQuantity, Line = maxLine > 0 ? maxLine + 1 : 1, RequiredDate = unApprovedDetail.RequiredDate, SpecialTax = unApprovedDetail.SpecialTax, SpecialTaxAmount = unApprovedDetail.SpecialTaxAmount, StockUMID = unApprovedDetail.StockUMID, TotalAmount = unApprovedDetail.TotalAmount, UMRate = unApprovedDetail.UMRate, UnitPrice = unApprovedDetail.UnitPrice, VAT = unApprovedDetail.VAT, VATAmount = unApprovedDetail.VATAmount, VendorItem = unApprovedDetail.VendorItem, VendorRevision = unApprovedDetail.VendorRevision, ApproverID = SystemProperty.UserID, ApprovalDate = serverDate }; // add to local list newDetails.Add(newOrderDetail); foreach (var deliverySchedule in unApprovedDetail.PO_DeliverySchedules) { var newSchedule = new PO_DeliverySchedule { DeliveryQuantity = deliverySchedule.DeliveryQuantity, Adjustment = deliverySchedule.DeliveryQuantity, ScheduleDate = deliverySchedule.ScheduleDate, DeliveryLine = deliverySchedule.DeliveryLine }; // add delivery to new order dteail newOrderDetail.PO_DeliverySchedules.Add(newSchedule); newDeliveries.Add(newSchedule); } // add new order detail to order master poMaster.PO_PurchaseOrderDetails.Add(newOrderDetail); } } } // now recalculate order quantity of approved purchase order detail foreach (var detailId in updatedDetail) { var detail = dataContext.PO_PurchaseOrderDetails.FirstOrDefault(d => d.PurchaseOrderDetailID == detailId); var orderQuantity = detail.PO_DeliverySchedules.Sum(d => d.DeliveryQuantity); detail.OrderQuantity = orderQuantity; } dataContext.SubmitChanges(); } trans.Complete(); } } catch (SqlException ex) { if (ex.Errors.Count > 1) { if (ex.Number == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, methodName, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } }
public PRO_PlanningOffset GetPlanningOffset(int cycleId) { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); return(dataContext.PRO_PlanningOffsets.FirstOrDefault(b => b.DCOptionMasterID == cycleId)); }
/// <summary> /// This method uses to get SysRoleVO object by ID /// </summary> public Sys_Role GetRole(int roleId) { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); return(dataContext.Sys_Roles.SingleOrDefault(r => r.RoleID == roleId)); }
public List <PRO_ProductionLine> GetProductionLine() { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); return(dataContext.PRO_ProductionLines.ToList()); }
public void SaveCompletion(DataTable dataSource, DateTime postDate, string multiTransNo, int masterLocationId, int shiftId, int purposeId) { const string methodName = This + ".SaveCompletion()"; try { using (var trans = new TransactionScope(TransactionScopeOption.RequiresNew, new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted })) { using (var dataContext = new PCSDataContext(Utils.Instance.ConnectionString)) { int tranTypeId = dataContext.MST_TranTypes.FirstOrDefault(t => t.Code == TransactionType.WORK_ORDER_COMPLETION).TranTypeID; var serverDate = dataContext.GetServerDate(); foreach (var woCompletion in from DataRow row in dataSource.Rows where row.RowState != DataRowState.Deleted && row.RowState != DataRowState.Detached select CreateNewCompletion(row, postDate, serverDate, multiTransNo, masterLocationId, shiftId, purposeId)) { // save work order completion transaction first dataContext.PRO_WorkOrderCompletions.InsertOnSubmit(woCompletion); dataContext.SubmitChanges(ConflictMode.ContinueOnConflict); #region get list of components and subtract quantity var components = dataContext.ITM_BOMs.Where(b => b.ProductID == woCompletion.ProductID); // DO NOT ALLOW USER COMPLETE THE WORK ORDER THAT NOT HAS COMPONENT if (components.Count() == 0) { throw new PCSBOException(ErrorCode.MESSAGE_NOT_HAS_COMPONENT_TO_COMPLETE, methodName, new Exception()); } var binCacheData = from binCache in dataContext.IV_BinCaches join bin in dataContext.MST_BINs on binCache.BinID equals bin.BinID where bin.LocationID == woCompletion.PRO_WorkOrderMaster.PRO_ProductionLine.LocationID.GetValueOrDefault(0) && bin.BinTypeID == (int?)BinTypeEnum.IN select binCache; int locationId = woCompletion.PRO_WorkOrderMaster.PRO_ProductionLine.LocationID.GetValueOrDefault(0); //Subtract quantity in buffer location foreach (var component in components) { var subtractQuantity = woCompletion.CompletedQuantity * component.Quantity; var binCache = binCacheData.FirstOrDefault(b => b.ProductID == component.ComponentID); // check onhand quantity in case component not allow negative onhand quantity if (!component.ITM_Product.AllowNegativeQty.GetValueOrDefault(false)) { // not enough quantity to subtract if (binCache == null || subtractQuantity > binCache.OHQuantity.GetValueOrDefault(0)) { var productError = new Hashtable { { PRO_WorkOrderDetailTable.WORKORDERDETAILID_FLD, woCompletion.WorkOrderDetailID } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, component.ITM_Product.Code, new Exception(), productError); } } #region substract Master Location Cache var masLocCache = dataContext.IV_MasLocCaches.FirstOrDefault(m => m.MasterLocationID == woCompletion.MasterLocationID && m.ProductID == component.ComponentID); if (masLocCache != null) { masLocCache.OHQuantity = masLocCache.OHQuantity.GetValueOrDefault(0) - subtractQuantity; } else { masLocCache = new IV_MasLocCache { CCNID = woCompletion.CCNID, MasterLocationID = woCompletion.MasterLocationID, ProductID = component.ComponentID, OHQuantity = -subtractQuantity, Lot = woCompletion.Lot }; dataContext.IV_MasLocCaches.InsertOnSubmit(masLocCache); } decimal?masLocOnHand = masLocCache.OHQuantity; decimal?masLocCommit = masLocCache.CommitQuantity; #endregion #region substract Location Cache var locCache = dataContext.IV_LocationCaches.FirstOrDefault(m => m.MasterLocationID == woCompletion.MasterLocationID && m.LocationID == locationId && m.ProductID == component.ComponentID); if (locCache != null) { locCache.OHQuantity = locCache.OHQuantity.GetValueOrDefault(0) - subtractQuantity; } else { locCache = new IV_LocationCache { CCNID = woCompletion.CCNID, MasterLocationID = woCompletion.MasterLocationID, LocationID = locationId, ProductID = component.ComponentID, OHQuantity = -subtractQuantity, Lot = woCompletion.Lot }; dataContext.IV_LocationCaches.InsertOnSubmit(locCache); } decimal?locOnHand = locCache.OHQuantity; decimal?locCommit = locCache.CommitQuantity; #endregion #region substract Bin Cache var componentBinCache = dataContext.IV_BinCaches.FirstOrDefault(m => m.MasterLocationID == woCompletion.MasterLocationID && m.LocationID == locationId && m.BinID == binCache.BinID && m.ProductID == component.ComponentID); if (componentBinCache != null) { componentBinCache.OHQuantity = componentBinCache.OHQuantity.GetValueOrDefault(0) - subtractQuantity; } else { componentBinCache = new IV_BinCache { CCNID = woCompletion.CCNID, MasterLocationID = woCompletion.MasterLocationID, LocationID = locationId, BinID = binCache.BinID, ProductID = component.ComponentID, OHQuantity = -subtractQuantity, Lot = woCompletion.Lot }; dataContext.IV_BinCaches.InsertOnSubmit(componentBinCache); } decimal?binOnHand = componentBinCache.OHQuantity; decimal?binCommit = componentBinCache.CommitQuantity; #endregion #region transaction history var transHistory = new MST_TransactionHistory { BinID = binCache.BinID, TransDate = serverDate, TranTypeID = tranTypeId, LocationID = locationId, ProductID = component.ComponentID, CCNID = woCompletion.CCNID, Lot = woCompletion.Lot, MasterLocationID = woCompletion.MasterLocationID, StockUMID = component.ITM_Product.StockUMID, Serial = woCompletion.Serial, PostDate = woCompletion.PostDate, RefMasterID = woCompletion.WorkOrderCompletionID, Quantity = -subtractQuantity, MasLocCommitQuantity = masLocCommit, BinCommitQuantity = binCommit, LocationCommitQuantity = locCommit, MasLocOHQuantity = masLocOnHand, LocationOHQuantity = locOnHand, BinOHQuantity = binOnHand, UserName = SystemProperty.UserName, IssuePurposeID = (int?)PurposeEnum.Completion }; dataContext.MST_TransactionHistories.InsertOnSubmit(transHistory); #endregion } #endregion #region add completion quantity to cache and add transaction history #region add Master Location Cache var masLoc = dataContext.IV_MasLocCaches.FirstOrDefault(m => m.MasterLocationID == woCompletion.MasterLocationID && m.ProductID == woCompletion.ProductID); if (masLoc != null) { masLoc.OHQuantity = masLoc.OHQuantity.GetValueOrDefault(0) + woCompletion.CompletedQuantity; } else { masLoc = new IV_MasLocCache { CCNID = woCompletion.CCNID, MasterLocationID = woCompletion.MasterLocationID, ProductID = woCompletion.ProductID, OHQuantity = woCompletion.CompletedQuantity, Lot = woCompletion.Lot }; dataContext.IV_MasLocCaches.InsertOnSubmit(masLoc); } decimal?masOnHand = masLoc.OHQuantity; decimal?masCommit = masLoc.CommitQuantity; #endregion #region add Location Cache var lCache = dataContext.IV_LocationCaches.FirstOrDefault(m => m.MasterLocationID == woCompletion.MasterLocationID && m.LocationID == woCompletion.LocationID && m.ProductID == woCompletion.ProductID); if (lCache != null) { lCache.OHQuantity = lCache.OHQuantity.GetValueOrDefault(0) + woCompletion.CompletedQuantity; } else { lCache = new IV_LocationCache { CCNID = woCompletion.CCNID, MasterLocationID = woCompletion.MasterLocationID, LocationID = woCompletion.LocationID, ProductID = woCompletion.ProductID, OHQuantity = woCompletion.CompletedQuantity, Lot = woCompletion.Lot }; dataContext.IV_LocationCaches.InsertOnSubmit(lCache); } decimal?lOnhand = lCache.OHQuantity; decimal?lCommit = lCache.CommitQuantity; #endregion #region add Bin Cache var bCache = dataContext.IV_BinCaches.FirstOrDefault(m => m.MasterLocationID == woCompletion.MasterLocationID && m.LocationID == woCompletion.LocationID && m.BinID == woCompletion.BinID && m.ProductID == woCompletion.ProductID); if (bCache != null) { bCache.OHQuantity = bCache.OHQuantity.GetValueOrDefault(0) + woCompletion.CompletedQuantity; } else { bCache = new IV_BinCache { CCNID = woCompletion.CCNID, MasterLocationID = woCompletion.MasterLocationID, LocationID = woCompletion.LocationID, BinID = woCompletion.BinID.GetValueOrDefault(0), ProductID = woCompletion.ProductID, OHQuantity = woCompletion.CompletedQuantity, Lot = woCompletion.Lot }; dataContext.IV_BinCaches.InsertOnSubmit(bCache); } decimal?bOnhand = bCache.OHQuantity; decimal?bCommit = bCache.CommitQuantity; #endregion #region transaction history var transHistory1 = new MST_TransactionHistory { BinID = woCompletion.BinID, TransDate = serverDate, TranTypeID = tranTypeId, LocationID = woCompletion.LocationID, ProductID = woCompletion.ProductID, CCNID = woCompletion.CCNID, Lot = woCompletion.Lot, MasterLocationID = woCompletion.MasterLocationID, StockUMID = woCompletion.StockUMID, Serial = woCompletion.Serial, PostDate = woCompletion.PostDate, RefMasterID = woCompletion.WorkOrderCompletionID, RefDetailID = woCompletion.WorkOrderCompletionID, Quantity = woCompletion.CompletedQuantity, MasLocCommitQuantity = masCommit, BinCommitQuantity = bCommit, LocationCommitQuantity = lCommit, MasLocOHQuantity = masOnHand, LocationOHQuantity = lOnhand, BinOHQuantity = bOnhand, UserName = SystemProperty.UserName, IssuePurposeID = (int?)PurposeEnum.Completion }; dataContext.MST_TransactionHistories.InsertOnSubmit(transHistory1); #endregion #endregion #region update work order detail status if completed var orderQuantity = woCompletion.PRO_WorkOrderDetail.OrderQuantity; var totalCompleted = dataContext.PRO_WorkOrderCompletions.Where( w => w.WorkOrderDetailID == woCompletion.WorkOrderDetailID).Sum(w => w.CompletedQuantity); if (totalCompleted >= orderQuantity) { dataContext.PRO_WorkOrderDetails.FirstOrDefault(w => w.WorkOrderDetailID == woCompletion.WorkOrderDetailID).Status = (byte?)WOLineStatus.MfgClose; } #endregion // submit changes for each completion transaction dataContext.SubmitChanges(ConflictMode.ContinueOnConflict); #region refresh all changes made since we already submit changes var changeSet = dataContext.GetChangeSet(); var refreshedTables = new List <ITable>(); foreach (var item in changeSet.Updates) { var table = dataContext.GetTable(item.GetType()); if (refreshedTables.Contains(table)) { continue; } refreshedTables.Add(table); dataContext.Refresh(RefreshMode.OverwriteCurrentValues, table); } foreach (var item in changeSet.Deletes) { var table = dataContext.GetTable(item.GetType()); if (refreshedTables.Contains(table)) { continue; } refreshedTables.Add(table); dataContext.Refresh(RefreshMode.OverwriteCurrentValues, table); } foreach (var item in changeSet.Inserts) { var table = dataContext.GetTable(item.GetType()); if (refreshedTables.Contains(table)) { continue; } refreshedTables.Add(table); dataContext.Refresh(RefreshMode.OverwriteCurrentValues, table); } #endregion } } trans.Complete(); } } catch (SqlException ex) { if (ex.Errors.Count > 1) { if (ex.Number == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, methodName, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } }
/// <summary> /// Gets the completion data. /// </summary> /// <param name="multiTransNo">The multi trans no.</param> /// <returns></returns> public PRO_WorkOrderCompletion GetCompletionData(string multiTransNo) { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); return(dataContext.PRO_WorkOrderCompletions.FirstOrDefault(w => w.MultiCompletionNo == multiTransNo)); }
/// <summary> /// Update a record into database /// </summary> /// <param name="pObjectDetail"></param> /// <Author> Thien HD, Jan-07-2005</Author> /*public void Update(object pObjectDetail) * { * using (TransactionScope trans = new TransactionScope()) * { * var objSys_UserDS = new Sys_UserDS(); * objSys_UserDS.UpdateUserInfo(pObjectDetail); * trans.Complete(); * } * }*/ public bool UserExist(string strUserName, string Id) { bool ret = false; using (var trans = new TransactionScope()) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { try { var listuser = new List <Sys_User>(); if (!string.IsNullOrEmpty(Id)) { int iId = int.Parse(Id); var list = from obj in db.Sys_Users where obj.UserName == strUserName && obj.UserID != iId select obj; if (list == null) { ret = false; } else { listuser = list.ToList <Sys_User>(); if (listuser.Count > 0) { ret = true; } else { ret = false; } } } else { var list = from obj in db.Sys_Users where obj.UserName == strUserName select obj; if (list == null) { ret = false; } else { listuser = list.ToList <Sys_User>(); if (listuser.Count > 0) { ret = true; } else { ret = false; } } } } catch { trans.Complete(); ret = true; } } trans.Complete(); } return(ret); }
/// <summary> /// Gets the default counting method (Count) /// </summary> /// <returns></returns> public IV_CoutingMethod GetDefaultCountingMethod() { var dataContext = new PCSDataContext(Utils.Instance.ConnectionString); return(dataContext.IV_CoutingMethods.FirstOrDefault(e => e.CountingMethodID == 1)); }
public MST_UnitOfMeasure GetUnitOfMeasure(int unitId) { var db = new PCSDataContext(Utils.Instance.ConnectionString); return(db.MST_UnitOfMeasures.FirstOrDefault(u => u.UnitOfMeasureID == unitId)); }
public int AddAndReturnId(object pobjMaster, DataSet pdstDetailData) { const string methodName = "PCSComProduction.WorkOrder.BO.AddAndReturnID()"; try { using (var trans = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = new TimeSpan(0, 1, 0) })) { using (var db = new PCSDataContext(Utils.Instance.ConnectionString)) { var serverDate = db.GetServerDate(); var tranTypeId = db.MST_TranTypes.FirstOrDefault(t => t.Code == TransactionTypeEnum.PROIssueMaterial.ToString()).TranTypeID; #region add the master first //add the master first var objMaster = (PRO_IssueMaterialMasterVO)pobjMaster; var issueMaster = new PRO_IssueMaterialMaster { MasterLocationID = objMaster.MasterLocationID, PostDate = objMaster.PostDate, IssueNo = objMaster.IssueNo, CCNID = objMaster.CCNID, IssuePurposeID = objMaster.IssuePurposeID, ToLocationID = objMaster.ToLocationID, ToBinID = objMaster.ToBinID, ShiftID = objMaster.ShiftID }; if (objMaster.WorkOrderMasterID > 0) { issueMaster.WorkOrderMasterID = objMaster.WorkOrderMasterID; } if (objMaster.WorkOrderDetailID > 0) { issueMaster.WorkOrderDetailID = objMaster.WorkOrderDetailID; } #endregion #region insert issue detail //update the detail foreach (var issueDetail in from DataRow dr in pdstDetailData.Tables[0].Rows where dr.RowState != DataRowState.Deleted select CreateIssueDetail(dr)) { issueMaster.PRO_IssueMaterialDetails.Add(issueDetail); } db.PRO_IssueMaterialMasters.InsertOnSubmit(issueMaster); db.SubmitChanges(); #endregion #region cache data foreach (var issueDetail in issueMaster.PRO_IssueMaterialDetails) { var allowNegative = issueDetail.ITM_Product.AllowNegativeQty.GetValueOrDefault(false); #region subtract from source cache #region bin cache var sourceBin = db.IV_BinCaches.FirstOrDefault(e => e.LocationID == issueDetail.LocationID && e.BinID == issueDetail.BinID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (sourceBin == null || sourceBin.OHQuantity.GetValueOrDefault(0) < issueDetail.CommitQuantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, sourceBin == null ? 0 : sourceBin.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (sourceBin != null) { sourceBin.OHQuantity = sourceBin.OHQuantity.GetValueOrDefault(0) - issueDetail.CommitQuantity; } else { // create new record sourceBin = new IV_BinCache { BinID = issueDetail.BinID.GetValueOrDefault(0), CCNID = issueMaster.CCNID, LocationID = issueDetail.LocationID, MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.CommitQuantity }; db.IV_BinCaches.InsertOnSubmit(sourceBin); } #endregion #region location cache var sourceLocation = db.IV_LocationCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.MasterLocationID && e.LocationID == issueDetail.LocationID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (sourceLocation == null || sourceLocation.OHQuantity.GetValueOrDefault(0) < issueDetail.CommitQuantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, sourceLocation == null ? 0 : sourceLocation.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (sourceLocation != null) { sourceLocation.OHQuantity = sourceLocation.OHQuantity.GetValueOrDefault(0) - issueDetail.CommitQuantity; } else { // create new record sourceLocation = new IV_LocationCache { CCNID = issueMaster.CCNID, LocationID = issueDetail.LocationID, MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.CommitQuantity }; db.IV_LocationCaches.InsertOnSubmit(sourceLocation); } #endregion #region master location cache var sourceMasLocation = db.IV_MasLocCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.MasterLocationID && e.ProductID == issueDetail.ProductID); if (!allowNegative && (sourceMasLocation == null || sourceMasLocation.OHQuantity.GetValueOrDefault(0) < issueDetail.CommitQuantity)) { var productError = new Hashtable { { ITM_ProductTable.PRODUCTID_FLD, issueDetail.ProductID }, { IV_BinCacheTable.OHQUANTITY_FLD, sourceMasLocation == null ? 0 : sourceMasLocation.OHQuantity.GetValueOrDefault(0) } }; throw new PCSBOException(ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE, issueDetail.ITM_Product.Code, new Exception(), productError); } if (sourceMasLocation != null) { sourceMasLocation.OHQuantity = sourceMasLocation.OHQuantity.GetValueOrDefault(0) - issueDetail.CommitQuantity; } else { // create new record sourceMasLocation = new IV_MasLocCache { CCNID = issueMaster.CCNID, MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, OHQuantity = -issueDetail.CommitQuantity }; db.IV_MasLocCaches.InsertOnSubmit(sourceMasLocation); } #endregion #region Transaction history var sourceHistory = new MST_TransactionHistory { CCNID = issueMaster.CCNID, StockUMID = issueDetail.StockUMID, MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, LocationID = issueDetail.LocationID, BinID = issueDetail.BinID, RefMasterID = issueMaster.IssueMaterialMasterID, RefDetailID = issueDetail.IssueMaterialDetailID, PostDate = issueMaster.PostDate, TransDate = serverDate, Quantity = -issueDetail.CommitQuantity, UserName = SystemProperty.UserName, TranTypeID = tranTypeId, BinCommitQuantity = sourceBin.CommitQuantity, BinOHQuantity = sourceBin.OHQuantity, IssuePurposeID = issueMaster.IssuePurposeID, LocationCommitQuantity = sourceLocation.CommitQuantity, LocationOHQuantity = sourceLocation.OHQuantity, MasLocCommitQuantity = sourceMasLocation.CommitQuantity, MasLocOHQuantity = sourceMasLocation.OHQuantity }; db.MST_TransactionHistories.InsertOnSubmit(sourceHistory); #endregion #endregion #region add to destination cache #region bin cache var destBin = db.IV_BinCaches.FirstOrDefault(e => e.LocationID == issueMaster.ToLocationID && e.BinID == issueMaster.ToBinID && e.ProductID == issueDetail.ProductID); if (destBin != null) { destBin.OHQuantity = destBin.OHQuantity.GetValueOrDefault(0) + issueDetail.CommitQuantity; } else { // create new record destBin = new IV_BinCache { BinID = issueMaster.ToBinID.GetValueOrDefault(0), CCNID = issueMaster.CCNID, LocationID = issueMaster.ToLocationID.GetValueOrDefault(0), MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, OHQuantity = issueDetail.CommitQuantity }; db.IV_BinCaches.InsertOnSubmit(destBin); } #endregion #region location cache var destLocation = db.IV_LocationCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.MasterLocationID && e.LocationID == issueMaster.ToLocationID && e.ProductID == issueDetail.ProductID); if (destLocation != null) { destLocation.OHQuantity = destLocation.OHQuantity.GetValueOrDefault(0) + issueDetail.CommitQuantity; } else { // create new record destLocation = new IV_LocationCache { CCNID = issueMaster.CCNID, LocationID = issueMaster.ToLocationID.GetValueOrDefault(0), MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, OHQuantity = issueDetail.CommitQuantity }; db.IV_LocationCaches.InsertOnSubmit(destLocation); } #endregion #region master location cache var destMasLocation = db.IV_MasLocCaches.FirstOrDefault(e => e.MasterLocationID == issueMaster.MasterLocationID && e.ProductID == issueDetail.ProductID); if (destMasLocation != null) { destMasLocation.OHQuantity = destMasLocation.OHQuantity.GetValueOrDefault(0) + issueDetail.CommitQuantity; } else { // create new record destMasLocation = new IV_MasLocCache { CCNID = issueMaster.CCNID, MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, OHQuantity = issueDetail.CommitQuantity }; db.IV_MasLocCaches.InsertOnSubmit(destMasLocation); } #endregion #region Transaction history var destHistory = new MST_TransactionHistory { CCNID = issueMaster.CCNID, StockUMID = issueDetail.StockUMID, MasterLocationID = issueMaster.MasterLocationID, ProductID = issueDetail.ProductID, LocationID = issueMaster.ToLocationID, BinID = issueMaster.ToBinID, RefMasterID = issueMaster.IssueMaterialMasterID, RefDetailID = issueDetail.IssueMaterialDetailID, PostDate = issueMaster.PostDate, TransDate = serverDate, Quantity = issueDetail.CommitQuantity, UserName = SystemProperty.UserName, TranTypeID = tranTypeId, BinCommitQuantity = destBin.CommitQuantity, BinOHQuantity = destBin.OHQuantity, IssuePurposeID = issueMaster.IssuePurposeID, LocationCommitQuantity = destLocation.CommitQuantity, LocationOHQuantity = destLocation.OHQuantity, MasLocCommitQuantity = destMasLocation.CommitQuantity, MasLocOHQuantity = destMasLocation.OHQuantity }; db.MST_TransactionHistories.InsertOnSubmit(destHistory); #endregion #endregion db.SubmitChanges(); } #endregion db.SubmitChanges(); trans.Complete(); return(issueMaster.IssueMaterialMasterID); } } } catch (PCSBOException ex) { if (ex.mCode == ErrorCode.SQLDUPLICATE_KEYCODE) { throw new PCSDBException(ErrorCode.DUPLICATE_KEY, methodName, ex); } if (ex.mCode == ErrorCode.MESSAGE_NOT_ENOUGH_COMPONENT_TO_COMPLETE) { throw; } throw new PCSDBException(ErrorCode.ERROR_DB, methodName, ex); } }