Int64 IACCPrePayableStatementDetailDataAccess.Delete(ACCPrePayableStatementDetailEntity aCCPrePayableStatementDetailEntity, String filterExpression, DatabaseOperationType option, TransactionRequired reqTran)
        {
            try
            {
                long retValues = -99;

                switch (reqTran)
                {
                case TransactionRequired.No:
                {
                    retValues = Delete(aCCPrePayableStatementDetailEntity, filterExpression, option);
                    break;
                }

                case TransactionRequired.Yes:
                {
                    retValues = DeleteTran(aCCPrePayableStatementDetailEntity, filterExpression, option);
                    break;
                }

                default:
                {
                    retValues = -99;
                    break;
                }
                }

                return(retValues);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private Int64 DeleteTran(ACCPrePayableStatementDetailEntity aCCPrePayableStatementDetailEntity, String filterExpression, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.ACCPrePayableStatementDetail_SET";

            Database db = DatabaseFactory.CreateDatabase();


            using (DbCommand cmd = db.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option);
                AddOutputParameter(cmd, db);
                AddFilterExpressionParameter(cmd, filterExpression, db);


                DbConnection connection = db.CreateConnection();
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();

                try
                {
                    using (IDataReader reader = db.ExecuteReader(cmd, transaction))
                    {
                        returnCode = GetReturnCodeFromParameter(cmd);
                    }

                    if (returnCode >= 0)
                    {
                        transaction.Commit();
                    }
                    else
                    {
                        throw new ArgumentException("Error Code." + returnCode.ToString());
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                finally
                {
                    transaction.Dispose();
                    connection.Close();
                    connection = null;
                }
            }

            return(returnCode);
        }
        private Int64 Delete(ACCPrePayableStatementDetailEntity aCCPrePayableStatementDetailEntity, String filterExpression, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.ACCPrePayableStatementDetail_SET";

            using (DbCommand cmd = Database.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option);
                AddOutputParameter(cmd);
                AddFilterExpressionParameter(cmd, filterExpression);


                using (IDataReader reader = Database.ExecuteReader(cmd))
                {
                    returnCode = GetReturnCodeFromParameter(cmd);

                    switch (returnCode)
                    {
                    case SqlConstants.DB_STATUS_CODE_DATAALREADYEXIST:
                    {
                        throw new ArgumentException("ACCPrePayableStatementDetailEntity already exists. Please specify another ACCPrePayableStatementDetailEntity.");
                    }

                    case SqlConstants.DB_STATUS_CODE_DATAUPDATEDFROMOTHERSESSION:
                    {
                        throw new ArgumentException("ACCPrePayableStatementDetailEntity data already updated from different session.");
                    }

                    case SqlConstants.DB_STATUS_CODE_FAIL_OPERATION:
                    {
                        throw new ArgumentException("ACCPrePayableStatementDetailEntity already exists. Please specify another ACCPrePayableStatementDetailEntity.");
                    }
                    }
                }
            }

            return(returnCode);
        }
 Int64 IACCPrePayableStatementDetailFacade.Delete(ACCPrePayableStatementDetailEntity aCCPrePayableStatementDetailEntity, String filterExpression, DatabaseOperationType option, TransactionRequired reqTran)
 {
     return(DataAccessFactory.CreateACCPrePayableStatementDetailDataAccess().Delete(aCCPrePayableStatementDetailEntity, filterExpression, option, reqTran));
 }
 Int64 IACCPrePayableStatementDetailFacade.Add(ACCPrePayableStatementDetailEntity aCCPrePayableStatementDetailEntity, DatabaseOperationType option, TransactionRequired reqTran)
 {
     return(DataAccessFactory.CreateACCPrePayableStatementDetailDataAccess().Add(aCCPrePayableStatementDetailEntity, option, reqTran));
 }
        private void SaveWOtoACCPrePayableStatementEntity()
        {
            if (IsValid)
            {
                try
                {
                    #region AccPayableStatemenet Detail

                    IList <ACCPrePayableStatementDetailByWorkOrderNo_CustomEntity> lstACCPrePayableStatementDetail_CustomEntity = FCCACCPrePayableStatementDetailByWorkOrderNo_Custom.GetFacadeCreate().GetIL(Int64.Parse(ddlWorkOrderID.SelectedValue));

                    if (lstACCPrePayableStatementDetail_CustomEntity != null && lstACCPrePayableStatementDetail_CustomEntity.Count > 0)
                    {
                        IList <ACCPrePayableStatementDetailEntity> lstACCPrePayableStatementDetail = new List <ACCPrePayableStatementDetailEntity>();

                        foreach (ACCPrePayableStatementDetailByWorkOrderNo_CustomEntity entACCPrePayableStatementDetail_CustomEntity in lstACCPrePayableStatementDetail_CustomEntity)
                        {
                            ACCPrePayableStatementDetailEntity entACCPrePayableStatementDetail = new ACCPrePayableStatementDetailEntity();



                            //if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                            //{
                            //    ACCPrePayableStatementDetailEntity entTempACCPrePayableStatementDetail = (from s in lstACCPrePayableStatementDetail
                            //                                                                              where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID
                            //                                                                              // where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID && s.WorkOrderID == entACCPrePayableStatementDetail_CustomEntity.WorkOrderID
                            //                                                                              //&& s.ApprovedBillAmount == entACCPrePayableStatementDetail_CustomEntity.BillAmount && s.RequisitionID != entACCPrePayableStatementDetail_CustomEntity.RequisitionID
                            //                                                                              select s).FirstOrDefault();


                            //    if (entTempACCPrePayableStatementDetail != null && entTempACCPrePayableStatementDetail.BillID > 0)
                            //    {

                            //        //Remove Previous Item
                            //        lstACCPrePayableStatementDetail.Remove(entTempACCPrePayableStatementDetail);

                            //        entTempACCPrePayableStatementDetail.RequisitionNo += "," + entACCPrePayableStatementDetail_CustomEntity.RequisitionNo;

                            //        //Add New Edited Item.
                            //        lstACCPrePayableStatementDetail.Add(entTempACCPrePayableStatementDetail);

                            //        continue;
                            //    }
                            //}



                            Decimal workOrderAgreementAmount = 0, paidAmount = 0, tDSAmount = 0, securityMoney = 0, billAmount = 0;

                            entACCPrePayableStatementDetail.PrePayableStatementID = ACCPrePayableStatementID;
                            if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.IsNotNullOrEmpty())
                            {
                                entACCPrePayableStatementDetail.WorkOrderNo = entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.Trim();
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderNo = null;
                            }

                            if (entACCPrePayableStatementDetail_CustomEntity.WOAmount.HasValue)
                            {
                                workOrderAgreementAmount = Decimal.Parse(entACCPrePayableStatementDetail_CustomEntity.WOAmount.ToString());
                                entACCPrePayableStatementDetail.WorkOrderAmount = workOrderAgreementAmount;
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderAmount = null;
                            }

                            if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderID > 0)
                            {
                                entACCPrePayableStatementDetail.WorkOrderID = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.WorkOrderID.ToString());
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderID = null;
                            }

                            if (entACCPrePayableStatementDetail_CustomEntity.StartDate != null)
                            {
                                entACCPrePayableStatementDetail.WorkOrderDate = entACCPrePayableStatementDetail_CustomEntity.StartDate;
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderDate = null;
                            }

                            Decimal payableAgainstWO = (workOrderAgreementAmount - paidAmount - tDSAmount);
                            //Decimal netPayableConsideringBillSecurity = (billAmount - paidAmount - securityMoney - tDSAmount); //need to discuss with Rayan vaiya. To get value from formula or anywhere else???
                            Decimal netPayableConsideringBillSecurity = payableAgainstWO;

                            entACCPrePayableStatementDetail.PaidAmount              = paidAmount;
                            entACCPrePayableStatementDetail.SecurityMoney           = securityMoney;
                            entACCPrePayableStatementDetail.TDSAmount               = tDSAmount;
                            entACCPrePayableStatementDetail.PayableAgainstWorkOrder = payableAgainstWO;
                            entACCPrePayableStatementDetail.NetPayableConsideringBillAndSecurity = netPayableConsideringBillSecurity;
                            entACCPrePayableStatementDetail.CreateDate         = System.DateTime.Now;
                            entACCPrePayableStatementDetail.ApprovedBillAmount = 0;

                            entACCPrePayableStatementDetail.PartyReconcile = false;

                            Int64    requisitionID   = 0;
                            Int64    projectID       = 0;
                            String   projectCode     = null;
                            String   requisitionNo   = null;
                            DateTime requisitionDate = System.DateTime.Now;

                            if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderID > 0)
                            {
                                String fe_WOItemMap = SqlExpressionBuilder.PrepareFilterExpression(PRMWorkOrderItemMapEntity.FLD_NAME_WorkOrderID, entACCPrePayableStatementDetail_CustomEntity.WorkOrderID.ToString(), SQLMatchType.Equal);
                                IList <PRMWorkOrderItemMapEntity> lstWOItemMap = FCCPRMWorkOrderItemMap.GetFacadeCreate().GetIL(null, null, String.Empty, fe_WOItemMap, DatabaseOperationType.LoadWithFilterExpression);

                                if (lstWOItemMap != null && lstWOItemMap.Count > 0)
                                {
                                    var distinctTypeIDs = lstWOItemMap.Select(x => x.RequisitionID).Distinct();

                                    foreach (var ent in distinctTypeIDs)
                                    {
                                        String fe_requisition = SqlExpressionBuilder.PrepareFilterExpression("REQRequisition." + REQRequisitionEntity.FLD_NAME_RequisitionID, ent.ToString(), SQLMatchType.Equal);
                                        IList <REQRequisition_DetailedEntity> lstReqRequisition_detailed = FCCREQRequisition_Detailed.GetFacadeCreate().GetIL(10000, 1, String.Empty, fe_requisition);

                                        if (lstReqRequisition_detailed != null && lstReqRequisition_detailed.Count > 0)
                                        {
                                            requisitionID   = lstReqRequisition_detailed[0].RequisitionID;
                                            projectCode     = lstReqRequisition_detailed[0].ProjectCode;
                                            requisitionNo  += lstReqRequisition_detailed[0].RequisitionNo + " ";
                                            requisitionDate = lstReqRequisition_detailed[0].RequisitionDate;
                                            projectID       = lstReqRequisition_detailed[0].ProjectID;
                                        }
                                    }
                                }
                            }

                            entACCPrePayableStatementDetail.RequisitionID   = requisitionID;
                            entACCPrePayableStatementDetail.RequisitionNo   = requisitionNo;
                            entACCPrePayableStatementDetail.RequisitionDate = requisitionDate;
                            entACCPrePayableStatementDetail.ProjectID       = projectID;
                            entACCPrePayableStatementDetail.ProjectCode     = projectCode;

                            //REQRequisitionEntity reqRequisitionEntity = null;

                            //if (entACCPrePayableStatementDetail_CustomEntity.RequisitionID > 0)
                            //{
                            //    entACCPrePayableStatementDetail.RequisitionID = entACCPrePayableStatementDetail_CustomEntity.RequisitionID;
                            //    reqRequisitionEntity = FCCREQRequisition.GetFacadeCreate().GetByID(entACCPrePayableStatementDetail_CustomEntity.RequisitionID);

                            //    if (reqRequisitionEntity != null)
                            //    {
                            //        entACCPrePayableStatementDetail.RequisitionNo = reqRequisitionEntity.RequisitionNo; ;
                            //        entACCPrePayableStatementDetail.RequisitionDate = reqRequisitionEntity.RequisitionDate;
                            //        entACCPrePayableStatementDetail.ProjectID = reqRequisitionEntity.ProjectID; // Project ID should come from the first requisition Project ID.
                            //    }
                            //}

                            //else
                            //{
                            //    entACCPrePayableStatementDetail.RequisitionID = null;
                            //}



                            //if (entACCPrePayableStatementDetail_CustomEntity.RequisitionNo.IsNotNullOrEmpty())
                            //{
                            //    entACCPrePayableStatementDetail.RequisitionNo = entACCPrePayableStatementDetail_CustomEntity.RequisitionNo;
                            //}
                            //else
                            //{
                            //    entACCPrePayableStatementDetail.RequisitionNo = null;
                            //}

                            //if (entACCPrePayableStatementDetail_CustomEntity.RequisitionDate.HasValue)
                            //{
                            //    entACCPrePayableStatementDetail.RequisitionDate = entACCPrePayableStatementDetail_CustomEntity.RequisitionDate;
                            //}
                            //else
                            //{
                            //    entACCPrePayableStatementDetail.RequisitionDate = null;
                            //}


                            //entACCPrePayableStatementDetail.ProjectID = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.ProjectID.ToString());
                            entACCPrePayableStatementDetail.BillID             = null;
                            entACCPrePayableStatementDetail.BillDate           = null;
                            entACCPrePayableStatementDetail.BillNo             = null;
                            entACCPrePayableStatementDetail.VendorCategoryID   = MasterDataConstants.MDVendorCategory.VENDOR;
                            entACCPrePayableStatementDetail.FromVendorID       = entACCPrePayableStatementDetail_CustomEntity.SupplierID;
                            entACCPrePayableStatementDetail.CreateByEmployeeID = MiscUtil.GetCurrentEmployeeByMemberID(CurrentMember);
                            entACCPrePayableStatementDetail.Ref               = null;
                            entACCPrePayableStatementDetail.DueDate           = DateTime.Now;
                            entACCPrePayableStatementDetail.PlannedDate       = null;
                            entACCPrePayableStatementDetail.Remarks           = null;
                            entACCPrePayableStatementDetail.AdditionalRemarks = null;

                            entACCPrePayableStatementDetail.ACCPayablePaymentStatusID              = MasterDataConstants.MDACCPayablePaymentStatus.CURRENT;
                            entACCPrePayableStatementDetail.ACCPayableApprovalStatusID             = MasterDataConstants.ACCPrePayableStatementApprovalStatus.INITIATED;
                            entACCPrePayableStatementDetail.AccountPaybleStatementDetailCategoryID = MasterDataConstants.MDAccountPaybleStatementDetailCategory.REGULAR;
                            entACCPrePayableStatementDetail.PayableClassificationID = MasterDataConstants.MDPayableClassification.AS;
                            entACCPrePayableStatementDetail.APPanelID = MasterDataConstants.DeafultAPPanel.DEFAULT_AP_PANEL;

                            entACCPrePayableStatementDetail.IsRemoved = false;
                            entACCPrePayableStatementDetail.IsLocked  = false;

                            lstACCPrePayableStatementDetail.Add(entACCPrePayableStatementDetail);

                            break;
                        }

                        #region Insert To Payable Detail

                        if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                        {
                            foreach (ACCPrePayableStatementDetailEntity ent in lstACCPrePayableStatementDetail)
                            {
                                FCCACCPrePayableStatementDetail.GetFacadeCreate().Add(ent, DatabaseOperationType.Add, TransactionRequired.No);
                            }
                        }

                        #endregion

                        MiscUtil.ShowMessage(lblMessage, "Pre Payable Statement Information has been added successfully.", false);
                    }

                    #endregion

                    _PrePayableStatementID        = 0;
                    _ACCPrePayableStatementEntity = new ACCPrePayableStatementEntity();
                    PrepareInitialView();
                }
                catch (Exception ex)
                {
                    MiscUtil.ShowMessage(lblMessage, ex.Message, true);
                }
            }
        }
        private void SaveBilltoACCPrePayableStatementEntity()
        {
            if (IsValid)
            {
                try
                {
                    #region AccPayableStatemenet Detail

                    IList <ACCPrePayableStatementDetailByBill_CustomEntity> lstACCPrePayableStatementDetail_CustomEntity = FCCACCPrePayableStatementDetailByBill_Custom.GetFacadeCreate().GetIL(Int64.Parse(ddlBillID.SelectedValue));

                    if (lstACCPrePayableStatementDetail_CustomEntity != null && lstACCPrePayableStatementDetail_CustomEntity.Count > 0)
                    {
                        IList <ACCPrePayableStatementDetailEntity> lstACCPrePayableStatementDetail = new List <ACCPrePayableStatementDetailEntity>();

                        foreach (ACCPrePayableStatementDetailByBill_CustomEntity entACCPrePayableStatementDetail_CustomEntity in lstACCPrePayableStatementDetail_CustomEntity)
                        {
                            ACCPrePayableStatementDetailEntity entACCPrePayableStatementDetail = new ACCPrePayableStatementDetailEntity();



                            if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                            {
                                ACCPrePayableStatementDetailEntity entTempACCPrePayableStatementDetail = (from s in lstACCPrePayableStatementDetail
                                                                                                          where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID && s.WorkOrderID == entACCPrePayableStatementDetail_CustomEntity.WorkOrderID
                                                                                                          // where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID && s.WorkOrderID == entACCPrePayableStatementDetail_CustomEntity.WorkOrderID
                                                                                                          //&& s.ApprovedBillAmount == entACCPrePayableStatementDetail_CustomEntity.BillAmount && s.RequisitionID != entACCPrePayableStatementDetail_CustomEntity.RequisitionID
                                                                                                          select s).FirstOrDefault();


                                if (entTempACCPrePayableStatementDetail != null && entTempACCPrePayableStatementDetail.BillID > 0)
                                {
                                    //Remove Previous Item
                                    lstACCPrePayableStatementDetail.Remove(entTempACCPrePayableStatementDetail);

                                    entTempACCPrePayableStatementDetail.RequisitionNo += "," + entACCPrePayableStatementDetail_CustomEntity.RequisitionNo;

                                    //Add New Edited Item.
                                    lstACCPrePayableStatementDetail.Add(entTempACCPrePayableStatementDetail);

                                    continue;
                                }
                            }



                            Decimal workOrderAgreementAmount = 0, paidAmount = 0, tDSAmount = 0, securityMoney = 0;

                            entACCPrePayableStatementDetail.PrePayableStatementID = ACCPrePayableStatementID;
                            if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.IsNotNullOrEmpty())
                            {
                                entACCPrePayableStatementDetail.WorkOrderNo = entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.Trim();
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderNo = null;
                            }

                            if (entACCPrePayableStatementDetail_CustomEntity.WOAmount.HasValue)
                            {
                                workOrderAgreementAmount = Decimal.Parse(entACCPrePayableStatementDetail_CustomEntity.WOAmount.ToString());
                                entACCPrePayableStatementDetail.WorkOrderAmount = workOrderAgreementAmount;
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderAmount = null;
                            }

                            if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderID > 0)
                            {
                                entACCPrePayableStatementDetail.WorkOrderID = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.WorkOrderID.ToString());
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderID = null;
                            }

                            if (entACCPrePayableStatementDetail_CustomEntity.StartDate.HasValue)
                            {
                                entACCPrePayableStatementDetail.WorkOrderDate = entACCPrePayableStatementDetail_CustomEntity.StartDate;
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.WorkOrderDate = null;
                            }

                            Decimal payableAgainstWO                  = (workOrderAgreementAmount - paidAmount - tDSAmount);
                            Decimal netPayableConsideringBillSecurity = (payableAgainstWO - paidAmount - securityMoney - tDSAmount);

                            entACCPrePayableStatementDetail.PaidAmount              = paidAmount;
                            entACCPrePayableStatementDetail.SecurityMoney           = securityMoney;
                            entACCPrePayableStatementDetail.TDSAmount               = tDSAmount;
                            entACCPrePayableStatementDetail.PayableAgainstWorkOrder = payableAgainstWO;
                            entACCPrePayableStatementDetail.NetPayableConsideringBillAndSecurity = netPayableConsideringBillSecurity;
                            entACCPrePayableStatementDetail.CreateDate = System.DateTime.Now;

                            if (entACCPrePayableStatementDetail_CustomEntity.BillAmount.HasValue)
                            {
                                entACCPrePayableStatementDetail.ApprovedBillAmount = Decimal.Parse(entACCPrePayableStatementDetail_CustomEntity.BillAmount.ToString());
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.ApprovedBillAmount = null;
                            }

                            entACCPrePayableStatementDetail.PartyReconcile = false;

                            if (entACCPrePayableStatementDetail_CustomEntity.RequisitionID > 0)
                            {
                                entACCPrePayableStatementDetail.RequisitionID = entACCPrePayableStatementDetail_CustomEntity.RequisitionID;
                            }

                            else
                            {
                                entACCPrePayableStatementDetail.RequisitionID = null;
                            }


                            if (entACCPrePayableStatementDetail_CustomEntity.RequisitionNo.IsNotNullOrEmpty())
                            {
                                entACCPrePayableStatementDetail.RequisitionNo = entACCPrePayableStatementDetail_CustomEntity.RequisitionNo;
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.RequisitionNo = null;
                            }

                            if (entACCPrePayableStatementDetail_CustomEntity.RequisitionDate.HasValue)
                            {
                                entACCPrePayableStatementDetail.RequisitionDate = entACCPrePayableStatementDetail_CustomEntity.RequisitionDate;
                            }
                            else
                            {
                                entACCPrePayableStatementDetail.RequisitionDate = null;
                            }

                            entACCPrePayableStatementDetail.ProjectID          = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.ProjectID.ToString());
                            entACCPrePayableStatementDetail.BillID             = entACCPrePayableStatementDetail_CustomEntity.BillID;
                            entACCPrePayableStatementDetail.BillDate           = entACCPrePayableStatementDetail_CustomEntity.billlDate;
                            entACCPrePayableStatementDetail.BillNo             = entACCPrePayableStatementDetail_CustomEntity.BillNo;
                            entACCPrePayableStatementDetail.VendorCategoryID   = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.VendorCategory.ToString());
                            entACCPrePayableStatementDetail.FromVendorID       = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.Vendor.ToString());
                            entACCPrePayableStatementDetail.CreateByEmployeeID = MiscUtil.GetCurrentEmployeeByMemberID(CurrentMember);
                            entACCPrePayableStatementDetail.Ref               = null;
                            entACCPrePayableStatementDetail.DueDate           = DateTime.Now;
                            entACCPrePayableStatementDetail.PlannedDate       = null;
                            entACCPrePayableStatementDetail.Remarks           = null;
                            entACCPrePayableStatementDetail.AdditionalRemarks = null;

                            entACCPrePayableStatementDetail.ACCPayablePaymentStatusID              = MasterDataConstants.MDACCPayablePaymentStatus.CURRENT;
                            entACCPrePayableStatementDetail.ACCPayableApprovalStatusID             = MasterDataConstants.ACCPrePayableStatementApprovalStatus.INITIATED;
                            entACCPrePayableStatementDetail.AccountPaybleStatementDetailCategoryID = MasterDataConstants.MDAccountPaybleStatementDetailCategory.REGULAR;
                            entACCPrePayableStatementDetail.PayableClassificationID = MasterDataConstants.MDPayableClassification.AS;
                            entACCPrePayableStatementDetail.APPanelID = MasterDataConstants.DeafultAPPanel.DEFAULT_AP_PANEL;

                            entACCPrePayableStatementDetail.IsRemoved = false;
                            entACCPrePayableStatementDetail.IsLocked  = false;

                            lstACCPrePayableStatementDetail.Add(entACCPrePayableStatementDetail);
                        }

                        #region Insert To Payable Detail

                        if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                        {
                            foreach (ACCPrePayableStatementDetailEntity ent in lstACCPrePayableStatementDetail)
                            {
                                FCCACCPrePayableStatementDetail.GetFacadeCreate().Add(ent, DatabaseOperationType.Add, TransactionRequired.No);
                            }
                        }

                        #endregion
                    }

                    #endregion

                    _PrePayableStatementID        = 0;
                    _ACCPrePayableStatementEntity = new ACCPrePayableStatementEntity();
                    PrepareInitialView();

                    MiscUtil.ShowMessage(lblMessage, "Pre Payable Statement Information has been added successfully.", false);
                }
                catch (Exception ex)
                {
                    MiscUtil.ShowMessage(lblMessage, ex.Message, true);
                }
            }
        }
        private Int64 Add(ACCPrePayableStatementDetailEntity aCCPrePayableStatementDetailEntity, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.ACCPrePayableStatementDetail_SET";

            using (DbCommand cmd = Database.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option);
                AddOutputParameter(cmd);
                AddNullPrimaryKeyParameter(cmd, "PrePayableStatementDetailID");

                Database.AddInParameter(cmd, "@PrePayableStatementID", DbType.Int64, aCCPrePayableStatementDetailEntity.PrePayableStatementID);
                Database.AddInParameter(cmd, "@ProjectID", DbType.Int64, aCCPrePayableStatementDetailEntity.ProjectID);
                Database.AddInParameter(cmd, "@ProjectCode", DbType.String, aCCPrePayableStatementDetailEntity.ProjectCode);
                Database.AddInParameter(cmd, "@WorkOrderID", DbType.Int64, aCCPrePayableStatementDetailEntity.WorkOrderID);
                Database.AddInParameter(cmd, "@WorkOrderNo", DbType.String, aCCPrePayableStatementDetailEntity.WorkOrderNo);
                Database.AddInParameter(cmd, "@WorkOrderAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.WorkOrderAmount);
                Database.AddInParameter(cmd, "@WorkOrderDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.WorkOrderDate);
                Database.AddInParameter(cmd, "@PaidAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.PaidAmount);
                Database.AddInParameter(cmd, "@SecurityMoney", DbType.Decimal, aCCPrePayableStatementDetailEntity.SecurityMoney);
                Database.AddInParameter(cmd, "@TDSAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.TDSAmount);
                Database.AddInParameter(cmd, "@PayableAgainstWorkOrder", DbType.Decimal, aCCPrePayableStatementDetailEntity.PayableAgainstWorkOrder);
                Database.AddInParameter(cmd, "@ApprovedBillAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.ApprovedBillAmount);
                Database.AddInParameter(cmd, "@NetPayableConsideringBillAndSecurity", DbType.Decimal, aCCPrePayableStatementDetailEntity.NetPayableConsideringBillAndSecurity);
                Database.AddInParameter(cmd, "@PartyReconcile", DbType.Boolean, aCCPrePayableStatementDetailEntity.PartyReconcile);
                Database.AddInParameter(cmd, "@RequisitionID", DbType.Int64, aCCPrePayableStatementDetailEntity.RequisitionID);
                Database.AddInParameter(cmd, "@RequisitionNo", DbType.String, aCCPrePayableStatementDetailEntity.RequisitionNo);
                Database.AddInParameter(cmd, "@RequisitionDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.RequisitionDate);
                Database.AddInParameter(cmd, "@BillID", DbType.Int64, aCCPrePayableStatementDetailEntity.BillID);
                Database.AddInParameter(cmd, "@BillNo", DbType.String, aCCPrePayableStatementDetailEntity.BillNo);
                Database.AddInParameter(cmd, "@BillDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.BillDate);
                Database.AddInParameter(cmd, "@Remarks", DbType.String, aCCPrePayableStatementDetailEntity.Remarks);
                Database.AddInParameter(cmd, "@Ref", DbType.String, aCCPrePayableStatementDetailEntity.Ref);
                Database.AddInParameter(cmd, "@VendorCategoryID", DbType.Int64, aCCPrePayableStatementDetailEntity.VendorCategoryID);
                Database.AddInParameter(cmd, "@FromVendorID", DbType.Int64, aCCPrePayableStatementDetailEntity.FromVendorID);
                Database.AddInParameter(cmd, "@CreateDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.CreateDate);
                Database.AddInParameter(cmd, "@DueDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.DueDate);
                Database.AddInParameter(cmd, "@PlannedDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.PlannedDate);
                Database.AddInParameter(cmd, "@AdditionalRemarks", DbType.String, aCCPrePayableStatementDetailEntity.AdditionalRemarks);
                Database.AddInParameter(cmd, "@ACCPayablePaymentStatusID", DbType.Int64, aCCPrePayableStatementDetailEntity.ACCPayablePaymentStatusID);
                Database.AddInParameter(cmd, "@ACCPayableApprovalStatusID", DbType.Int64, aCCPrePayableStatementDetailEntity.ACCPayableApprovalStatusID);
                Database.AddInParameter(cmd, "@AccountPaybleStatementDetailCategoryID", DbType.Int64, aCCPrePayableStatementDetailEntity.AccountPaybleStatementDetailCategoryID);
                Database.AddInParameter(cmd, "@PayableClassificationID", DbType.Int64, aCCPrePayableStatementDetailEntity.PayableClassificationID);
                Database.AddInParameter(cmd, "@CreateByEmployeeID", DbType.Int64, aCCPrePayableStatementDetailEntity.CreateByEmployeeID);
                Database.AddInParameter(cmd, "@APPanelID", DbType.Int64, aCCPrePayableStatementDetailEntity.APPanelID);
                Database.AddInParameter(cmd, "@IPAddress", DbType.String, aCCPrePayableStatementDetailEntity.IPAddress);
                Database.AddInParameter(cmd, "@IsRemoved", DbType.Boolean, aCCPrePayableStatementDetailEntity.IsRemoved);
                Database.AddInParameter(cmd, "@IsLocked", DbType.Boolean, aCCPrePayableStatementDetailEntity.IsLocked);

                using (IDataReader reader = Database.ExecuteReader(cmd))
                {
                    returnCode = GetReturnCodeFromParameter(cmd);

                    switch (returnCode)
                    {
                    case SqlConstants.DB_STATUS_CODE_DATAALREADYEXIST:
                    {
                        throw new ArgumentException("ACCPrePayableStatementDetailEntity already exists. Please specify another ACCPrePayableStatementDetailEntity.");
                    }

                    case SqlConstants.DB_STATUS_CODE_DATAUPDATEDFROMOTHERSESSION:
                    {
                        throw new ArgumentException("ACCPrePayableStatementDetailEntity data already updated from different session.");
                    }

                    case SqlConstants.DB_STATUS_CODE_FAIL_OPERATION:
                    {
                        throw new ArgumentException("ACCPrePayableStatementDetailEntity already exists. Please specify another ACCPrePayableStatementDetailEntity.");
                    }
                    }
                }
            }

            return(returnCode);
        }
        private Int64 UpdateTran(ACCPrePayableStatementDetailEntity aCCPrePayableStatementDetailEntity, String filterExpression, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.ACCPrePayableStatementDetail_SET";

            Database db = DatabaseFactory.CreateDatabase();

            using (DbCommand cmd = db.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option, db);
                AddOutputParameter(cmd, db);
                AddFilterExpressionParameter(cmd, filterExpression, db);

                db.AddInParameter(cmd, "@PrePayableStatementDetailID", DbType.Int64, aCCPrePayableStatementDetailEntity.PrePayableStatementDetailID);
                db.AddInParameter(cmd, "@PrePayableStatementID", DbType.Int64, aCCPrePayableStatementDetailEntity.PrePayableStatementID);
                db.AddInParameter(cmd, "@ProjectID", DbType.Int64, aCCPrePayableStatementDetailEntity.ProjectID);
                db.AddInParameter(cmd, "@ProjectCode", DbType.String, aCCPrePayableStatementDetailEntity.ProjectCode);
                db.AddInParameter(cmd, "@WorkOrderID", DbType.Int64, aCCPrePayableStatementDetailEntity.WorkOrderID);
                db.AddInParameter(cmd, "@WorkOrderNo", DbType.String, aCCPrePayableStatementDetailEntity.WorkOrderNo);
                db.AddInParameter(cmd, "@WorkOrderAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.WorkOrderAmount);
                db.AddInParameter(cmd, "@WorkOrderDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.WorkOrderDate);
                db.AddInParameter(cmd, "@PaidAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.PaidAmount);
                db.AddInParameter(cmd, "@SecurityMoney", DbType.Decimal, aCCPrePayableStatementDetailEntity.SecurityMoney);
                db.AddInParameter(cmd, "@TDSAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.TDSAmount);
                db.AddInParameter(cmd, "@PayableAgainstWorkOrder", DbType.Decimal, aCCPrePayableStatementDetailEntity.PayableAgainstWorkOrder);
                db.AddInParameter(cmd, "@ApprovedBillAmount", DbType.Decimal, aCCPrePayableStatementDetailEntity.ApprovedBillAmount);
                db.AddInParameter(cmd, "@NetPayableConsideringBillAndSecurity", DbType.Decimal, aCCPrePayableStatementDetailEntity.NetPayableConsideringBillAndSecurity);
                db.AddInParameter(cmd, "@PartyReconcile", DbType.Boolean, aCCPrePayableStatementDetailEntity.PartyReconcile);
                db.AddInParameter(cmd, "@RequisitionID", DbType.Int64, aCCPrePayableStatementDetailEntity.RequisitionID);
                db.AddInParameter(cmd, "@RequisitionNo", DbType.String, aCCPrePayableStatementDetailEntity.RequisitionNo);
                db.AddInParameter(cmd, "@RequisitionDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.RequisitionDate);
                db.AddInParameter(cmd, "@BillID", DbType.Int64, aCCPrePayableStatementDetailEntity.BillID);
                db.AddInParameter(cmd, "@BillNo", DbType.String, aCCPrePayableStatementDetailEntity.BillNo);
                db.AddInParameter(cmd, "@BillDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.BillDate);
                db.AddInParameter(cmd, "@Remarks", DbType.String, aCCPrePayableStatementDetailEntity.Remarks);
                db.AddInParameter(cmd, "@Ref", DbType.String, aCCPrePayableStatementDetailEntity.Ref);
                db.AddInParameter(cmd, "@VendorCategoryID", DbType.Int64, aCCPrePayableStatementDetailEntity.VendorCategoryID);
                db.AddInParameter(cmd, "@FromVendorID", DbType.Int64, aCCPrePayableStatementDetailEntity.FromVendorID);
                db.AddInParameter(cmd, "@CreateDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.CreateDate);
                db.AddInParameter(cmd, "@DueDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.DueDate);
                db.AddInParameter(cmd, "@PlannedDate", DbType.DateTime, aCCPrePayableStatementDetailEntity.PlannedDate);
                db.AddInParameter(cmd, "@AdditionalRemarks", DbType.String, aCCPrePayableStatementDetailEntity.AdditionalRemarks);
                db.AddInParameter(cmd, "@ACCPayablePaymentStatusID", DbType.Int64, aCCPrePayableStatementDetailEntity.ACCPayablePaymentStatusID);
                db.AddInParameter(cmd, "@ACCPayableApprovalStatusID", DbType.Int64, aCCPrePayableStatementDetailEntity.ACCPayableApprovalStatusID);
                db.AddInParameter(cmd, "@AccountPaybleStatementDetailCategoryID", DbType.Int64, aCCPrePayableStatementDetailEntity.AccountPaybleStatementDetailCategoryID);
                db.AddInParameter(cmd, "@PayableClassificationID", DbType.Int64, aCCPrePayableStatementDetailEntity.PayableClassificationID);
                db.AddInParameter(cmd, "@CreateByEmployeeID", DbType.Int64, aCCPrePayableStatementDetailEntity.CreateByEmployeeID);
                db.AddInParameter(cmd, "@APPanelID", DbType.Int64, aCCPrePayableStatementDetailEntity.APPanelID);
                db.AddInParameter(cmd, "@IPAddress", DbType.String, aCCPrePayableStatementDetailEntity.IPAddress);
                db.AddInParameter(cmd, "@IsRemoved", DbType.Boolean, aCCPrePayableStatementDetailEntity.IsRemoved);
                db.AddInParameter(cmd, "@IsLocked", DbType.Boolean, aCCPrePayableStatementDetailEntity.IsLocked);

                DbConnection connection = db.CreateConnection();
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();

                try
                {
                    using (IDataReader reader = db.ExecuteReader(cmd, transaction))
                    {
                        returnCode = GetReturnCodeFromParameter(cmd);
                    }

                    if (returnCode > 0)
                    {
                        transaction.Commit();
                    }
                    else
                    {
                        throw new ArgumentException("Error Code." + returnCode.ToString());
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                finally
                {
                    transaction.Dispose();
                    connection.Close();
                    connection = null;
                }
            }

            return(returnCode);
        }
Ejemplo n.º 10
0
        private void SaveACCPrePayableStatementEntity()
        {
            if (IsValid)
            {
                try
                {
                    ACCPrePayableStatementEntity aCCPrePayableStatementEntity = BuildACCPrePayableStatementEntity();

                    Int64 result = -1;

                    if (aCCPrePayableStatementEntity.IsNew)
                    {
                        result = FCCACCPrePayableStatement.GetFacadeCreate().Add(aCCPrePayableStatementEntity, DatabaseOperationType.Add, TransactionRequired.No);
                    }
                    else
                    {
                        String filterExpression = SqlExpressionBuilder.PrepareFilterExpression(ACCPrePayableStatementEntity.FLD_NAME_PrePayableStatementID, aCCPrePayableStatementEntity.PrePayableStatementID.ToString(), SQLMatchType.Equal);
                        result = FCCACCPrePayableStatement.GetFacadeCreate().Update(aCCPrePayableStatementEntity, filterExpression, DatabaseOperationType.Update, TransactionRequired.No);
                    }

                    if (result > 0)
                    {
                        #region AccPayableStatemenet Detail From Bill

                        IList <ACCPrePayableStatementDetail_CustomEntity> lstACCPrePayableStatementDetail_CustomEntity = FCCACCPrePayableStatementDetail_Custom.GetFacadeCreate().GetIL(aCCPrePayableStatementEntity.StartDate, aCCPrePayableStatementEntity.EndDate);

                        if (lstACCPrePayableStatementDetail_CustomEntity != null && lstACCPrePayableStatementDetail_CustomEntity.Count > 0)
                        {
                            IList <ACCPrePayableStatementDetailEntity> lstACCPrePayableStatementDetail = new List <ACCPrePayableStatementDetailEntity>();

                            foreach (ACCPrePayableStatementDetail_CustomEntity entACCPrePayableStatementDetail_CustomEntity in lstACCPrePayableStatementDetail_CustomEntity)
                            {
                                ACCPrePayableStatementDetailEntity entACCPrePayableStatementDetail = new ACCPrePayableStatementDetailEntity();



                                if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                                {
                                    ACCPrePayableStatementDetailEntity entTempACCPrePayableStatementDetail = (from s in lstACCPrePayableStatementDetail
                                                                                                              where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID && s.WorkOrderID == entACCPrePayableStatementDetail_CustomEntity.WorkOrderID
                                                                                                              //where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID && s.WorkOrderID == entACCPrePayableStatementDetail_CustomEntity.WorkOrderID
                                                                                                              //&& s.ApprovedBillAmount == entACCPrePayableStatementDetail_CustomEntity.BillAmount && s.RequisitionID == entACCPrePayableStatementDetail_CustomEntity.RequisitionID
                                                                                                              select s).FirstOrDefault();



                                    if (entTempACCPrePayableStatementDetail != null && entTempACCPrePayableStatementDetail.BillID > 0)
                                    {
                                        //Remove Previous Item
                                        lstACCPrePayableStatementDetail.Remove(entTempACCPrePayableStatementDetail);
                                        ///Clear this list................................
                                        entTempACCPrePayableStatementDetail.RequisitionNo += "," + entACCPrePayableStatementDetail_CustomEntity.RequisitionNo;

                                        //Add New Edited Item.
                                        lstACCPrePayableStatementDetail.Add(entTempACCPrePayableStatementDetail);

                                        continue;
                                    }
                                }

                                //else if(Flag)
                                //{

                                Decimal workOrderAgreementAmount = 0, paidAmount = 0, tDSAmount = 0, securityMoney = 0, billamount = 0;

                                Decimal.TryParse(entACCPrePayableStatementDetail_CustomEntity.BillAmount.ToString(), out billamount);

                                entACCPrePayableStatementDetail.PrePayableStatementID = result;
                                if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.IsNotNullOrEmpty())
                                {
                                    entACCPrePayableStatementDetail.WorkOrderNo = entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.Trim();
                                }
                                else
                                {
                                    entACCPrePayableStatementDetail.WorkOrderNo = null;
                                }

                                if (entACCPrePayableStatementDetail_CustomEntity.WOAmount.HasValue)
                                {
                                    workOrderAgreementAmount = Decimal.Parse(entACCPrePayableStatementDetail_CustomEntity.WOAmount.ToString());
                                    entACCPrePayableStatementDetail.WorkOrderAmount = workOrderAgreementAmount;
                                }
                                else
                                {
                                    entACCPrePayableStatementDetail.WorkOrderAmount = null;
                                }

                                if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderID > 0)
                                {
                                    entACCPrePayableStatementDetail.WorkOrderID = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.WorkOrderID.ToString());
                                }
                                else
                                {
                                    entACCPrePayableStatementDetail.WorkOrderID = null;
                                }

                                if (entACCPrePayableStatementDetail_CustomEntity.StartDate.HasValue)
                                {
                                    entACCPrePayableStatementDetail.WorkOrderDate = entACCPrePayableStatementDetail_CustomEntity.StartDate;
                                }
                                else
                                {
                                    entACCPrePayableStatementDetail.WorkOrderDate = null;
                                }

                                Decimal payableAgainstWO                  = (workOrderAgreementAmount - paidAmount - tDSAmount);
                                Decimal netPayableConsideringBillSecurity = (billamount - paidAmount - securityMoney - tDSAmount);

                                entACCPrePayableStatementDetail.PaidAmount              = paidAmount;
                                entACCPrePayableStatementDetail.SecurityMoney           = securityMoney;
                                entACCPrePayableStatementDetail.TDSAmount               = tDSAmount;
                                entACCPrePayableStatementDetail.PayableAgainstWorkOrder = payableAgainstWO;
                                entACCPrePayableStatementDetail.NetPayableConsideringBillAndSecurity = netPayableConsideringBillSecurity;
                                entACCPrePayableStatementDetail.CreateDate = System.DateTime.Now;

                                //if (!txtSecurityMoneyLV.Text.Trim().IsNullOrEmpty())
                                //{
                                //    aCCPrePayableStatementDetailEntity.SecurityMoney = Decimal.Parse(txtSecurityMoneyLV.Text.Trim());
                                //}
                                //else
                                //{
                                //    aCCPrePayableStatementDetailEntity.SecurityMoney = null;
                                //}

                                //if (!txtTDSAmountLV.Text.Trim().IsNullOrEmpty())
                                //{
                                //    aCCPrePayableStatementDetailEntity.TDSAmount = Decimal.Parse(txtTDSAmountLV.Text.Trim());
                                //}
                                //else
                                //{
                                //    aCCPrePayableStatementDetailEntity.TDSAmount = null;
                                //}

                                //if (!txtPayableAgainstWorkOrderLV.Text.Trim().IsNullOrEmpty())
                                //{
                                //    aCCPrePayableStatementDetailEntity.PayableAgainstWorkOrder = Decimal.Parse(txtPayableAgainstWorkOrderLV.Text.Trim());
                                //}
                                //else
                                //{
                                //    aCCPrePayableStatementDetailEntity.PayableAgainstWorkOrder = null;
                                //}

                                if (entACCPrePayableStatementDetail_CustomEntity.BillAmount.HasValue)
                                {
                                    entACCPrePayableStatementDetail.ApprovedBillAmount = Decimal.Parse(entACCPrePayableStatementDetail_CustomEntity.BillAmount.ToString());
                                }
                                else
                                {
                                    entACCPrePayableStatementDetail.ApprovedBillAmount = null;
                                }

                                //if (!txtNetPayableConsideringBillAndSecurityLV.Text.Trim().IsNullOrEmpty())
                                //{
                                //    aCCPrePayableStatementDetailEntity.NetPayableConsideringBillAndSecurity = Decimal.Parse(txtNetPayableConsideringBillAndSecurityLV.Text.Trim());
                                //}
                                //else
                                //{
                                //    aCCPrePayableStatementDetailEntity.NetPayableConsideringBillAndSecurity = null;
                                //}

                                entACCPrePayableStatementDetail.PartyReconcile = false;

                                if (entACCPrePayableStatementDetail_CustomEntity.RequisitionID > 0)
                                {
                                    entACCPrePayableStatementDetail.RequisitionID = entACCPrePayableStatementDetail_CustomEntity.RequisitionID;
                                }

                                else
                                {
                                    entACCPrePayableStatementDetail.RequisitionID = null;
                                }


                                if (entACCPrePayableStatementDetail_CustomEntity.RequisitionNo.IsNotNullOrEmpty())
                                {
                                    entACCPrePayableStatementDetail.RequisitionNo = entACCPrePayableStatementDetail_CustomEntity.RequisitionNo;
                                }
                                else
                                {
                                    entACCPrePayableStatementDetail.RequisitionNo = null;
                                }

                                if (entACCPrePayableStatementDetail_CustomEntity.RequisitionDate.HasValue)
                                {
                                    entACCPrePayableStatementDetail.RequisitionDate = entACCPrePayableStatementDetail_CustomEntity.RequisitionDate;
                                }
                                else
                                {
                                    entACCPrePayableStatementDetail.RequisitionDate = null;
                                }

                                entACCPrePayableStatementDetail.ProjectID          = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.ProjectID.ToString());
                                entACCPrePayableStatementDetail.BillID             = entACCPrePayableStatementDetail_CustomEntity.BillID;
                                entACCPrePayableStatementDetail.BillDate           = entACCPrePayableStatementDetail_CustomEntity.billlDate;
                                entACCPrePayableStatementDetail.BillNo             = entACCPrePayableStatementDetail_CustomEntity.BillNo;
                                entACCPrePayableStatementDetail.VendorCategoryID   = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.VendorCategory.ToString());
                                entACCPrePayableStatementDetail.FromVendorID       = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.Vendor.ToString());
                                entACCPrePayableStatementDetail.CreateByEmployeeID = MiscUtil.GetCurrentEmployeeByMemberID(CurrentMember);
                                entACCPrePayableStatementDetail.Ref               = null;
                                entACCPrePayableStatementDetail.DueDate           = DateTime.Now;
                                entACCPrePayableStatementDetail.PlannedDate       = null;
                                entACCPrePayableStatementDetail.Remarks           = null;
                                entACCPrePayableStatementDetail.AdditionalRemarks = null;

                                entACCPrePayableStatementDetail.ACCPayablePaymentStatusID              = MasterDataConstants.MDACCPayablePaymentStatus.CURRENT;
                                entACCPrePayableStatementDetail.ACCPayableApprovalStatusID             = MasterDataConstants.ACCPrePayableStatementApprovalStatus.INITIATED;
                                entACCPrePayableStatementDetail.AccountPaybleStatementDetailCategoryID = MasterDataConstants.MDAccountPaybleStatementDetailCategory.REGULAR;
                                entACCPrePayableStatementDetail.PayableClassificationID = MasterDataConstants.MDPayableClassification.AS;
                                entACCPrePayableStatementDetail.APPanelID = MasterDataConstants.DeafultAPPanel.DEFAULT_AP_PANEL;

                                entACCPrePayableStatementDetail.IsRemoved = false;
                                entACCPrePayableStatementDetail.IsLocked  = false;

                                lstACCPrePayableStatementDetail.Add(entACCPrePayableStatementDetail);
                                //}
                            }

                            #region AccPayableStatemenet Detail

                            IList <ACCPrePayableStatementDetailFromWO_CustomEntity> lstACCPrePayableStatementDetailFromWO_CustomEntity = FCCACCPrePayableStatementDetailFromWO_Custom.GetFacadeCreate().GetIL();

                            if (lstACCPrePayableStatementDetailFromWO_CustomEntity != null && lstACCPrePayableStatementDetailFromWO_CustomEntity.Count > 0)
                            {
                                foreach (ACCPrePayableStatementDetailFromWO_CustomEntity entACCPrePayableStatementDetail_CustomEntity in lstACCPrePayableStatementDetailFromWO_CustomEntity)
                                {
                                    ACCPrePayableStatementDetailEntity entACCPrePayableStatementDetail = new ACCPrePayableStatementDetailEntity();



                                    //if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                                    //{
                                    //    ACCPrePayableStatementDetailEntity entTempACCPrePayableStatementDetail = (from s in lstACCPrePayableStatementDetail
                                    //                                                                              where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID
                                    //                                                                              // where s.BillID == entACCPrePayableStatementDetail_CustomEntity.BillID && s.WorkOrderID == entACCPrePayableStatementDetail_CustomEntity.WorkOrderID
                                    //                                                                              //&& s.ApprovedBillAmount == entACCPrePayableStatementDetail_CustomEntity.BillAmount && s.RequisitionID != entACCPrePayableStatementDetail_CustomEntity.RequisitionID
                                    //                                                                              select s).FirstOrDefault();


                                    //    if (entTempACCPrePayableStatementDetail != null && entTempACCPrePayableStatementDetail.BillID > 0)
                                    //    {

                                    //        //Remove Previous Item
                                    //        lstACCPrePayableStatementDetail.Remove(entTempACCPrePayableStatementDetail);

                                    //        entTempACCPrePayableStatementDetail.RequisitionNo += "," + entACCPrePayableStatementDetail_CustomEntity.RequisitionNo;

                                    //        //Add New Edited Item.
                                    //        lstACCPrePayableStatementDetail.Add(entTempACCPrePayableStatementDetail);

                                    //        continue;
                                    //    }
                                    //}



                                    Decimal workOrderAgreementAmount = 0, paidAmount = 0, tDSAmount = 0, securityMoney = 0, billAmount = 0;

                                    entACCPrePayableStatementDetail.PrePayableStatementID = result;
                                    if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.IsNotNullOrEmpty())
                                    {
                                        entACCPrePayableStatementDetail.WorkOrderNo = entACCPrePayableStatementDetail_CustomEntity.WorkOrderNo.Trim();
                                    }
                                    else
                                    {
                                        entACCPrePayableStatementDetail.WorkOrderNo = null;
                                    }

                                    if (entACCPrePayableStatementDetail_CustomEntity.WOAmount.HasValue)
                                    {
                                        workOrderAgreementAmount = Decimal.Parse(entACCPrePayableStatementDetail_CustomEntity.WOAmount.ToString());
                                        entACCPrePayableStatementDetail.WorkOrderAmount = workOrderAgreementAmount;
                                    }
                                    else
                                    {
                                        entACCPrePayableStatementDetail.WorkOrderAmount = null;
                                    }

                                    if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderID > 0)
                                    {
                                        entACCPrePayableStatementDetail.WorkOrderID = Int64.Parse(entACCPrePayableStatementDetail_CustomEntity.WorkOrderID.ToString());
                                    }
                                    else
                                    {
                                        entACCPrePayableStatementDetail.WorkOrderID = null;
                                    }

                                    if (entACCPrePayableStatementDetail_CustomEntity.StartDate != null)
                                    {
                                        entACCPrePayableStatementDetail.WorkOrderDate = entACCPrePayableStatementDetail_CustomEntity.StartDate;
                                    }
                                    else
                                    {
                                        entACCPrePayableStatementDetail.WorkOrderDate = null;
                                    }

                                    Decimal payableAgainstWO = (workOrderAgreementAmount - paidAmount - tDSAmount);
                                    //Decimal netPayableConsideringBillSecurity = (billAmount - paidAmount - securityMoney - tDSAmount); //need to discuss with Rayan vaiya. To get value from formula or anywhere else???
                                    Decimal netPayableConsideringBillSecurity = payableAgainstWO;

                                    entACCPrePayableStatementDetail.PaidAmount              = paidAmount;
                                    entACCPrePayableStatementDetail.SecurityMoney           = securityMoney;
                                    entACCPrePayableStatementDetail.TDSAmount               = tDSAmount;
                                    entACCPrePayableStatementDetail.PayableAgainstWorkOrder = payableAgainstWO;
                                    entACCPrePayableStatementDetail.NetPayableConsideringBillAndSecurity = netPayableConsideringBillSecurity;
                                    entACCPrePayableStatementDetail.CreateDate         = System.DateTime.Now;
                                    entACCPrePayableStatementDetail.ApprovedBillAmount = 0;

                                    entACCPrePayableStatementDetail.PartyReconcile = false;

                                    Int64    requisitionID   = 0;
                                    Int64    projectID       = 0;
                                    String   projectCode     = null;
                                    String   requisitionNo   = null;
                                    DateTime requisitionDate = System.DateTime.Now;

                                    if (entACCPrePayableStatementDetail_CustomEntity.WorkOrderID > 0)
                                    {
                                        String fe_WOItemMap = SqlExpressionBuilder.PrepareFilterExpression(PRMWorkOrderItemMapEntity.FLD_NAME_WorkOrderID, entACCPrePayableStatementDetail_CustomEntity.WorkOrderID.ToString(), SQLMatchType.Equal);
                                        IList <PRMWorkOrderItemMapEntity> lstWOItemMap = FCCPRMWorkOrderItemMap.GetFacadeCreate().GetIL(null, null, String.Empty, fe_WOItemMap, DatabaseOperationType.LoadWithFilterExpression);

                                        if (lstWOItemMap != null && lstWOItemMap.Count > 0)
                                        {
                                            var distinctTypeIDs = lstWOItemMap.Select(x => x.RequisitionID).Distinct();

                                            foreach (var ent in distinctTypeIDs)
                                            {
                                                String fe_requisition = SqlExpressionBuilder.PrepareFilterExpression("REQRequisition." + REQRequisitionEntity.FLD_NAME_RequisitionID, ent.ToString(), SQLMatchType.Equal);
                                                IList <REQRequisition_DetailedEntity> lstReqRequisition_detailed = FCCREQRequisition_Detailed.GetFacadeCreate().GetIL(10000, 1, String.Empty, fe_requisition);

                                                if (lstReqRequisition_detailed != null && lstReqRequisition_detailed.Count > 0)
                                                {
                                                    requisitionID   = lstReqRequisition_detailed[0].RequisitionID;
                                                    projectCode     = lstReqRequisition_detailed[0].ProjectCode;
                                                    requisitionNo  += lstReqRequisition_detailed[0].RequisitionNo + " ";
                                                    requisitionDate = lstReqRequisition_detailed[0].RequisitionDate;
                                                    projectID       = lstReqRequisition_detailed[0].ProjectID;
                                                }
                                            }
                                        }
                                    }

                                    entACCPrePayableStatementDetail.RequisitionID   = requisitionID;
                                    entACCPrePayableStatementDetail.RequisitionNo   = requisitionNo;
                                    entACCPrePayableStatementDetail.RequisitionDate = requisitionDate;
                                    entACCPrePayableStatementDetail.ProjectID       = projectID;
                                    entACCPrePayableStatementDetail.ProjectCode     = projectCode;

                                    entACCPrePayableStatementDetail.BillID             = null;
                                    entACCPrePayableStatementDetail.BillDate           = null;
                                    entACCPrePayableStatementDetail.BillNo             = null;
                                    entACCPrePayableStatementDetail.VendorCategoryID   = MasterDataConstants.MDVendorCategory.VENDOR;
                                    entACCPrePayableStatementDetail.FromVendorID       = entACCPrePayableStatementDetail_CustomEntity.SupplierID;
                                    entACCPrePayableStatementDetail.CreateByEmployeeID = MiscUtil.GetCurrentEmployeeByMemberID(CurrentMember);
                                    entACCPrePayableStatementDetail.Ref               = null;
                                    entACCPrePayableStatementDetail.DueDate           = DateTime.Now;
                                    entACCPrePayableStatementDetail.PlannedDate       = null;
                                    entACCPrePayableStatementDetail.Remarks           = null;
                                    entACCPrePayableStatementDetail.AdditionalRemarks = null;

                                    entACCPrePayableStatementDetail.ACCPayablePaymentStatusID              = MasterDataConstants.MDACCPayablePaymentStatus.CURRENT;
                                    entACCPrePayableStatementDetail.ACCPayableApprovalStatusID             = MasterDataConstants.ACCPrePayableStatementApprovalStatus.INITIATED;
                                    entACCPrePayableStatementDetail.AccountPaybleStatementDetailCategoryID = MasterDataConstants.MDAccountPaybleStatementDetailCategory.REGULAR;
                                    entACCPrePayableStatementDetail.PayableClassificationID = MasterDataConstants.MDPayableClassification.AS;
                                    entACCPrePayableStatementDetail.APPanelID = MasterDataConstants.DeafultAPPanel.DEFAULT_AP_PANEL;

                                    entACCPrePayableStatementDetail.IsRemoved = false;
                                    entACCPrePayableStatementDetail.IsLocked  = false;

                                    lstACCPrePayableStatementDetail.Add(entACCPrePayableStatementDetail);
                                }

                                //#region Insert To Payable Detail

                                //if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                                //{
                                //    foreach (ACCPrePayableStatementDetailEntity ent in lstACCPrePayableStatementDetail)
                                //    {
                                //        FCCACCPrePayableStatementDetail.GetFacadeCreate().Add(ent, DatabaseOperationType.Add, TransactionRequired.No);
                                //    }
                                //}

                                //#endregion

                                //MiscUtil.ShowMessage(lblMessage, "Pre Payable Statement Information has been added successfully.", false);
                            }

                            #endregion

                            #region Insert To Payable Detail

                            if (lstACCPrePayableStatementDetail != null && lstACCPrePayableStatementDetail.Count > 0)
                            {
                                foreach (ACCPrePayableStatementDetailEntity ent in lstACCPrePayableStatementDetail)
                                {
                                    FCCACCPrePayableStatementDetail.GetFacadeCreate().Add(ent, DatabaseOperationType.Add, TransactionRequired.No);
                                }
                            }

                            #endregion
                        }

                        #endregion

                        _PrePayableStatementID        = 0;
                        _ACCPrePayableStatementEntity = new ACCPrePayableStatementEntity();
                        PrepareInitialView();
                        BindACCPrePayableStatementList();

                        String navUrl = UrlHelper.BuildSecureUrl("~/ACC/ACCPrePayableStatementDetail.aspx", string.Empty, UrlConstants.OVERVIEW_PRE_PAYABLE_STATEMENT_ID, result.ToString()).ToString();
                        Response.Redirect(navUrl);

                        if (aCCPrePayableStatementEntity.IsNew)
                        {
                            MiscUtil.ShowMessage(lblMessage, "Pre Payable Statement Information has been added successfully.", false);
                        }
                        else
                        {
                            MiscUtil.ShowMessage(lblMessage, "Pre Payable Statement Information has been updated successfully.", false);
                        }
                    }
                    else
                    {
                        if (aCCPrePayableStatementEntity.IsNew)
                        {
                            MiscUtil.ShowMessage(lblMessage, "Failed to add Pre Payable Statement Information.", false);
                        }
                        else
                        {
                            MiscUtil.ShowMessage(lblMessage, "Failed to update Pre Payable Statement Information.", false);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MiscUtil.ShowMessage(lblMessage, ex.Message, true);
                }
            }
        }