Esempio n. 1
0
 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);
 }
Esempio n. 2
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()));
        }
Esempio n. 3
0
        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);
                 * }*/
            }
        }
Esempio n. 4
0
        //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);
            }
        }
Esempio n. 5
0
        /// <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));
            }
        }
Esempio n. 6
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);
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        /// <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);
            }
        }
Esempio n. 9
0
        /// <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);
        }
Esempio n. 10
0
        /// <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);
        }
Esempio n. 11
0
        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());
        }
Esempio n. 12
0
        /*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));
            }
        }
Esempio n. 13
0
        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);
            }
        }
Esempio n. 14
0
        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);
            }
        }
Esempio n. 15
0
        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());
        }
Esempio n. 16
0
        /// <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);
            }
        }
Esempio n. 17
0
        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());
        }
Esempio n. 18
0
        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);
            }
        }
Esempio n. 19
0
        /// <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);
            }
        }
Esempio n. 20
0
        /// <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);
            }
        }
Esempio n. 21
0
        /// <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);
            }
        }
Esempio n. 22
0
        public PRO_PlanningOffset GetPlanningOffset(int cycleId)
        {
            var dataContext = new PCSDataContext(Utils.Instance.ConnectionString);

            return(dataContext.PRO_PlanningOffsets.FirstOrDefault(b => b.DCOptionMasterID == cycleId));
        }
Esempio n. 23
0
        /// <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));
        }
Esempio n. 24
0
        public List <PRO_ProductionLine> GetProductionLine()
        {
            var dataContext = new PCSDataContext(Utils.Instance.ConnectionString);

            return(dataContext.PRO_ProductionLines.ToList());
        }
Esempio n. 25
0
        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);
            }
        }
Esempio n. 26
0
        /// <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));
        }
Esempio n. 27
0
        /// <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);
        }
Esempio n. 28
0
        /// <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));
        }
Esempio n. 29
0
        public MST_UnitOfMeasure GetUnitOfMeasure(int unitId)
        {
            var db = new PCSDataContext(Utils.Instance.ConnectionString);

            return(db.MST_UnitOfMeasures.FirstOrDefault(u => u.UnitOfMeasureID == unitId));
        }
Esempio n. 30
0
        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);
            }
        }