public static string ManageDCMemo(NameValueCollection querystring)
        {
            int     intParser;
            decimal decimalParser;
            bool    boolParser;

            UserProfile userProfile = WebCommon.GetUserProfile();

            var dcMemo = new DCMemo
            {
                DCMemoID            = int.TryParse(querystring.Get("DCMemoID"), out intParser) ? intParser : 0,
                BranchID            = int.TryParse(querystring.Get("BranchID"), out intParser) ? intParser : 0,
                ReceivingBranchID   = int.TryParse(querystring.Get("ReceivingBranchID"), out intParser) ? intParser : 0,
                OriginatingBranchID = int.TryParse(querystring.Get("OriginatingBranchID"), out intParser) ? intParser : 0,
                SIDate = querystring.Get("SIDate"),
                // NewFirstDueDate = querystring.Get("NewFirstDueDate"),
                SIStatusID           = int.TryParse(querystring.Get("SIStatusID"), out intParser) ? intParser : 0,
                AdjustmentTypeID     = int.TryParse(querystring.Get("AdjustmentTypeID"), out intParser) ? intParser : 0,
                AdjustmentDate       = querystring.Get("AdjustmentDate"),
                AdjustmentNo         = querystring.Get("AdjustmentNo"),
                SaleID               = int.TryParse(querystring.Get("SaleID"), out intParser) ? intParser : 0,
                CorrectSaleID        = int.TryParse(querystring.Get("CorrectSaleID"), out intParser) ? intParser : 0,
                NewCustomerID        = int.TryParse(querystring.Get("NewCustomerID"), out intParser) ? intParser : 0,
                NewDueDate           = querystring.Get("NewDueDate"),
                DRNo                 = int.TryParse(querystring.Get("DRNo"), out intParser) ? intParser : 0,
                ORNo                 = int.TryParse(querystring.Get("ORNo"), out intParser) ? intParser : 0,
                RRNo                 = int.TryParse(querystring.Get("RRNo"), out intParser) ? intParser : 0,
                ADBNo                = int.TryParse(querystring.Get("ADBNo"), out intParser) ? intParser : 0,
                AmountAdjust         = decimal.TryParse(querystring.Get("AmountAdjust"), out decimalParser) ? decimalParser : 0,
                TotalAmountAdjust    = decimal.TryParse(querystring.Get("TotalAmountAdjust"), out decimalParser) ? decimalParser : 0,
                ChangedDueDate       = querystring.Get("ChangedDueDate"),
                Rebate               = decimal.TryParse(querystring.Get("Rebate"), out decimalParser) ? decimalParser : 0,
                Penalty              = decimal.TryParse(querystring.Get("Penalty"), out decimalParser) ? decimalParser : 0,
                NewTerm              = int.TryParse(querystring.Get("NewTerm"), out intParser) ? intParser : 0,
                NewMI                = decimal.TryParse(querystring.Get("NewMI"), out decimalParser) ? decimalParser : 0,
                NewPN                = decimal.TryParse(querystring.Get("NewPN"), out decimalParser) ? decimalParser : 0,
                NewUII               = decimal.TryParse(querystring.Get("NewUII"), out decimalParser) ? decimalParser : 0,
                NewProductStatusID   = int.TryParse(querystring.Get("NewProductStatusID"), out intParser) ? intParser : 0,
                Remarks              = querystring.Get("Remarks"),
                BankInvdSubsidiaryID = int.TryParse(querystring.Get("BankInvdSubsidiaryID"), out intParser) ? intParser : 0,
                AlertID              = int.TryParse(querystring.Get("AlertID"), out intParser) ? intParser : 0,
                UserID               = userProfile.UserId,
                EmployeeSubsidiaryID = int.TryParse(querystring.Get("EmployeeSubsidiaryID"), out intParser) ? intParser : 0,
                APVal                = decimal.TryParse(querystring.Get("APVal"), out decimalParser) ? decimalParser : 0,
                LCP                            = decimal.TryParse(querystring.Get("LCP"), out decimalParser) ? decimalParser : 0,
                SRP                            = decimal.TryParse(querystring.Get("SRP"), out decimalParser) ? decimalParser : 0,
                RNLCP                          = decimal.TryParse(querystring.Get("NLCP"), out decimalParser) ? decimalParser : 0,
                NR                             = decimal.TryParse(querystring.Get("NR"), out decimalParser) ? decimalParser : 0,
                intReason                      = int.TryParse(querystring.Get("intReason"), out intParser) ? intParser : 0,
                Particulars                    = querystring.Get("Particulars"),
                intIDInvMCStockNew             = int.TryParse(querystring.Get("intIDInvMCStockNew"), out intParser) ? intParser : 0,
                intIDMasEmployeeCCO            = int.TryParse(querystring.Get("intIDEmployeeCCO"), out intParser) ? intParser : 0,
                intIDAcctAccountAdjustmentForm = int.TryParse(querystring.Get("intIDAcctAccountAdjustmentForm"), out intParser) ? intParser : 0,
                curOB                          = decimal.TryParse(querystring.Get("curOB"), out decimalParser) ? decimalParser : 0,
                intIDMasRepoCategory           = bool.TryParse(querystring.Get("intRepoCategory"), out boolParser) ? boolParser : false,
                curPercentageRate              = decimal.TryParse(querystring.Get("curPercentage"), out decimalParser) ? decimalParser : 0,
            };

            string isInsert = querystring.Get("TransType");
            string param    = WebCommon.ToXML(dcMemo);

            return(DCMemoDAL.ManageDCMemo(param, isInsert));
        }
        public static List <DCMemo> GetDCMemo(string criteria, int branchID)
        {
            var dbUtil  = new DatabaseManager();
            var dcMemos = new List <DCMemo>();

            using (var conn = new SqlConnection(dbUtil.getSQLConnectionString("MainDB")))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandType    = CommandType.StoredProcedure;
                    cmd.CommandText    = "spAcctDCMGetDebitCreditMemo";
                    cmd.CommandTimeout = 180;
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@strCriteria", criteria);
                    cmd.Parameters.AddWithValue("@intBranchID", branchID);

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var drcrMemo = new DCMemo
                            {
                                DCMemoID            = ReferenceEquals(reader["intDCMemoID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intDCMemoID"]),
                                BranchID            = ReferenceEquals(reader["intBranchID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intBranchID"]),
                                ReceivingBranchID   = ReferenceEquals(reader["intReceivingBranchID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intReceivingBranchID"]),
                                OriginatingBranchID = ReferenceEquals(reader["intOriginatingBranchID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intOriginatingBranchID"]),
                                BranchName          = ReferenceEquals(reader["strBranchName"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strBranchName"]),
                                AdjustmentTypeID    = ReferenceEquals(reader["intAdjustmentTypeID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intAdjustmentTypeID"]),
                                AdjustmentType      = ReferenceEquals(reader["strAdjustmentType"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strAdjustmentType"]),
                                MemoType            = ReferenceEquals(reader["strMemoType"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strMemoType"]),
                                AdjustmentDate      = ReferenceEquals(reader["datAdjustmentDate"], DBNull.Value) ? String.Empty : Convert.ToString(reader["datAdjustmentDate"]),
                                AdjustmentNo        = ReferenceEquals(reader["strAdjustmentNo"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strAdjustmentNo"]),
                                Remarks             = ReferenceEquals(reader["strRemarks"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strRemarks"]),

                                SaleID       = ReferenceEquals(reader["intSaleID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intSaleID"]),
                                ProductID    = ReferenceEquals(reader["intIDMCStock"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intIDMCStock"]),
                                AccountCode  = ReferenceEquals(reader["strAccountCode"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strAccountCode"]),
                                CustomerName = ReferenceEquals(reader["strCustomerName"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strCustomerName"]),
                                DRNo         = ReferenceEquals(reader["intDRNo"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intDRNo"]),
                                ORNo         = ReferenceEquals(reader["intORNo"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intORNo"]),
                                RRNo         = ReferenceEquals(reader["intRRNo"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intRRNo"]),
                                ADBNo        = ReferenceEquals(reader["intADBNo"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intADBNo"]),
                                SINo         = ReferenceEquals(reader["strSINo"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strSINo"]),
                                SIStatusID   = ReferenceEquals(reader["intSIStatusID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intSIStatusID"]),
                                SIStatus     = ReferenceEquals(reader["strSIStatus"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strSIStatus"]),
                                AmountAdjust = ReferenceEquals(reader["curAmountAdjust"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curAmountAdjust"]),

                                SIDate = ReferenceEquals(reader["datSIDate"], DBNull.Value) ? String.Empty : Convert.ToString(reader["datSIDate"]),
                                //NewFirstDueDate = ReferenceEquals(reader["datNewFirstDueDate"], DBNull.Value) ? String.Empty : Convert.ToString(reader["datNewFirstDueDate"]),
                                Rebate            = ReferenceEquals(reader["curRebate"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curRebate"]),
                                Penalty           = ReferenceEquals(reader["curPenalty"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curPenalty"]),
                                TotalAmountAdjust = ReferenceEquals(reader["curTotalAmountAdjust"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curTotalAmountAdjust"]),

                                NewTerm            = ReferenceEquals(reader["intNewTerm"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intNewTerm"]),
                                NewMI              = ReferenceEquals(reader["curNewMI"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curNewMI"]),
                                NewPN              = ReferenceEquals(reader["curNewPN"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curNewPN"]),
                                NewUII             = ReferenceEquals(reader["curNewUII"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curNewUII"]),
                                DeferredBalance    = ReferenceEquals(reader["curDeferredBalance"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curDeferredBalance"]),
                                NewProductStatusID = ReferenceEquals(reader["intIDMasNewProductStatus"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intIDMasNewProductStatus"]),

                                NewCustomerID      = ReferenceEquals(reader["intMasNewCustomer"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intMasNewCustomer"]),
                                NewCustomerCode    = ReferenceEquals(reader["strNewCustomerCode"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strNewCustomerCode"]),
                                NewCustomerName    = ReferenceEquals(reader["strNewCustomerName"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strNewCustomerName"]),
                                NewCustomerAddress = ReferenceEquals(reader["strNewCustomerAddr"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strNewCustomerAddr"]),
                                ChangedDueDate     = ReferenceEquals(reader["datNewDueDate"], DBNull.Value) ? String.Empty : Convert.ToString(reader["datNewDueDate"]),

                                CorrectSaleID      = ReferenceEquals(reader["intCorrectSalesID"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intCorrectSalesID"]),
                                CorrectAccountCode = ReferenceEquals(reader["strCorrectAccountCode"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strCorrectAccountCode"]),
                                CorrectCustName    = ReferenceEquals(reader["strCorrectCustName"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strCorrectCustName"]),

                                WrongAccountCode = ReferenceEquals(reader["strWrongAccountCode"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strWrongAccountCode"]),
                                WrongCustName    = ReferenceEquals(reader["strWrongCustName"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strWrongCustName"]),

                                InvMCStockOldID = ReferenceEquals(reader["intIDInvMCStockOld"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intIDInvMCStockOld"]),
                                OldChassisNo    = ReferenceEquals(reader["strOldChassisNo"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strOldChassisNo"]),
                                OldEngineNo     = ReferenceEquals(reader["strOldEngineNo"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strOldEngineNo"]),

                                InvMCStockNewID = ReferenceEquals(reader["intIDInvMCStockNew"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intIDInvMCStockNew"]),
                                NewChassisNo    = ReferenceEquals(reader["strNewChassisNo"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strNewChassisNo"]),
                                NewEngineNo     = ReferenceEquals(reader["strNewEngineNo"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strNewEngineNo"]),

                                MCModelName = ReferenceEquals(reader["strMCModel"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strMCModel"]),

                                BankInvdSubsidiaryID = ReferenceEquals(reader["intIDMasCOABankInvdSubsidiary"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intIDMasCOABankInvdSubsidiary"]),
                                OldNR                          = ReferenceEquals(reader["curOldNR"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curOldNR"]),
                                NDD                            = ReferenceEquals(reader["NDD"], DBNull.Value) ? String.Empty : Convert.ToString(reader["NDD"]),
                                NLCP                           = ReferenceEquals(reader["NLCP"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["NLCP"]),
                                Balance                        = ReferenceEquals(reader["curBalance"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curBalance"]),
                                NR                             = ReferenceEquals(reader["curNR"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curNR"]),
                                LCP                            = ReferenceEquals(reader["curLCP"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curLCP"]),
                                RNLCP                          = ReferenceEquals(reader["curRNLCP"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curRNLCP"]),
                                SRP                            = ReferenceEquals(reader["curSRP"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curSRP"]),
                                APVal                          = ReferenceEquals(reader["curAP"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curAP"]),
                                datMTDate                      = ReferenceEquals(reader["datMTDate"], DBNull.Value) ? String.Empty : Convert.ToString(reader["datMTDate"]),
                                intReason                      = ReferenceEquals(reader["intReason"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intReason"]),
                                Particulars                    = ReferenceEquals(reader["strParticulars"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strParticulars"]),
                                intIDMasEmployeeCCO            = ReferenceEquals(reader["intIDMasEmployeeCCO"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intIDMasEmployeeCCO"]),
                                strMasEmployeeCCO              = ReferenceEquals(reader["strMasEmployeeCCO"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strMasEmployeeCCO"]),
                                intIDAcctAccountAdjustmentForm = ReferenceEquals(reader["intIDAcctAccountAdjustmentForm"], DBNull.Value) ? 0 : Convert.ToInt32(reader["intIDAcctAccountAdjustmentForm"]),
                                strAAFDescription              = ReferenceEquals(reader["strAAFDescription"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strAAFDescription"]),
                                curOB                          = ReferenceEquals(reader["curOB"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curOB"]),
                                intIDMasRepoCategory           = ReferenceEquals(reader["intIDMasRepoCategory"], DBNull.Value) ? false : Convert.ToBoolean(reader["intIDMasRepoCategory"]),
                                curPercentageRate              = ReferenceEquals(reader["curPercentageRate"], DBNull.Value) ? 0 : Convert.ToDecimal(reader["curPercentageRate"]),
                                strRequestStatus               = ReferenceEquals(reader["strRequestStatus"], DBNull.Value) ? String.Empty : Convert.ToString(reader["strRequestStatus"]),
                            };

                            dcMemos.Add(drcrMemo);
                        }

                        return(dcMemos);
                    }
                }
            }
        }