public void DeleteCreditPackageUsage(int nPackageID) { int nCreditPackageID; TblServiceSession ssUsage = new TblServiceSession(); ssUsage.NPackageID = nPackageID; DataTable tblUsage = ssUsage.SelectAllWnPackageIDLogic(); if (tblUsage.Rows.Count > 0) { throw new Exception("You Cant deleted a Used Package."); } TblMemberPackage mmbPckg = new TblMemberPackage(); mmbPckg.NPackageID = nPackageID; DataTable table = mmbPckg.SelectOne(); if (table == null || table.Rows.Count == 0) { throw new Exception("The Data has been deleted from database."); } mmbPckg.NStatusID = 2; mmbPckg.Update(); nCreditPackageID = mmbPckg.NCreditPackageID.Value; //Check any package redeemed from this credit package ACMSDAL.TblMemberPackage memberPackage = new TblMemberPackage(); string cmdText = "Select COUNT(*) from TblMemberPackage Where (nStatusID = 0 or nStatusID = 1) AND " + " nCreditPackageID = @nCreditPackageID "; int nExist = (int)memberPackage.ExecuteScalar(cmdText, new string [] { "@nCreditPackageID" }, new object[] { nCreditPackageID }); if (nExist == 0) { TblMemberCreditPackage creditPackage = new TblMemberCreditPackage(); creditPackage.NCreditPackageID = nCreditPackageID; creditPackage.SelectOne(); creditPackage.DtStartDate = SqlDateTime.Null; creditPackage.DtExpiryDate = SqlDateTime.Null; creditPackage.Update(); } }
public DataTable GetPrintBalanceTable(int nCreditPackageID) { TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); memberCreditPackage.NCreditPackageID = nCreditPackageID; DataTable table = memberCreditPackage.SelectOne(); TblCreditPackage creditPackage = new TblCreditPackage(); creditPackage.StrCreditPackageCode = memberCreditPackage.StrCreditPackageCode.Value; creditPackage.SelectOne(); decimal creditPackageValue = ACMS.Convert.ToDecimal(creditPackage.MCreditAmount); decimal mmbCreditPackageTopupAmt = ACMS.Convert.ToDecimal(memberCreditPackage.MTopupAmount); decimal totalCreditUsage = GetCreditUsageFromMemberPackage(nCreditPackageID); decimal balance = (creditPackageValue + mmbCreditPackageTopupAmt) - totalCreditUsage; DataTable tableToReturn = new DataTable(); DataColumn colCreditPackageID = new DataColumn("nCreditPackageID", System.Type.GetType("System.Int32")); DataColumn colBalance = new DataColumn("Balance", System.Type.GetType("System.Decimal")); DataColumn colExpiryDate = new DataColumn("ExpiryDate", System.Type.GetType("System.DateTime")); tableToReturn.Columns.Add(colBalance); tableToReturn.Columns.Add(colCreditPackageID); tableToReturn.Columns.Add(colExpiryDate); DataRow r = tableToReturn.NewRow(); r["nCreditPackageID"] = nCreditPackageID; r["Balance"] = balance; r["ExpiryDate"] = memberCreditPackage.DtExpiryDate.Value; return(tableToReturn); }
public void RecalculateAll() { decimal nettAmount = 0; decimal subtotal = 0; decimal nettAmountwGST = 0; Boolean isAllPricesWithGST = true; Boolean isAllPricesNoGST = false; //To check all items are with GST price or not, also cannot contain any discount foreach (DataRow r in myReceiptItemsTable.Rows) { if (myCategoryID == 7 || myCategoryID == 36 || myCategoryID == 37) { TblCreditPackage pkg = new TblCreditPackage(); pkg.StrCreditPackageCode = r["strCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull || ACMS.Convert.ToDecimal(pkg.MListPriceWGST) == 0 || r["strDiscountCode"].ToString() != "" || myReceiptMasterTable.Rows[0]["strDiscountCode"].ToString() != "") { isAllPricesWithGST = false; break; } pkg.Dispose(); } if (myCategoryID == 38) { isAllPricesWithGST = false; isAllPricesNoGST = true; break; } else { if (myCategoryID == 8 || myCategoryID == 9) { TblPackageGroup pkg = new TblPackageGroup(); pkg.StrPackageGroupCode = r["strCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull || ACMS.Convert.ToDecimal(pkg.MListPriceWGST) == 0 || r["strDiscountCode"].ToString() != "" || myReceiptMasterTable.Rows[0]["strDiscountCode"].ToString() != "") { isAllPricesWithGST = false; break; } pkg.Dispose(); } else { TblPackage pkg = new TblPackage(); pkg.StrPackageCode = r["strCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull || ACMS.Convert.ToDecimal(pkg.MListPriceWGST) == 0 || r["strDiscountCode"].ToString() != "" || myReceiptMasterTable.Rows[0]["strDiscountCode"].ToString() != "") { isAllPricesWithGST = false; break; } pkg.Dispose(); } } } foreach (DataRow r in myReceiptItemsTable.Rows) { if ((myCategoryID == 7 || myCategoryID == 36 || myCategoryID == 37) && isAllPricesWithGST) { TblCreditPackage pkg = new TblCreditPackage(); pkg.StrCreditPackageCode = r["strCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull == false && ACMS.Convert.ToDecimal(pkg.MListPriceWGST) != 0) { subtotal = ACMS.Convert.ToDecimal(r["nQuantity"]) * ACMS.Convert.ToDecimal(pkg.MListPriceWGST); nettAmountwGST += subtotal; } pkg.Dispose(); } else { if ((myCategoryID == 8 || myCategoryID == 9) && isAllPricesWithGST) { TblPackageGroup pkg = new TblPackageGroup(); pkg.StrPackageGroupCode = r["strCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull == false && ACMS.Convert.ToDecimal(pkg.MListPriceWGST) != 0) { subtotal = ACMS.Convert.ToDecimal(r["nQuantity"]) * ACMS.Convert.ToDecimal(pkg.MListPriceWGST); nettAmountwGST += subtotal; } pkg.Dispose(); } else if (isAllPricesWithGST) { TblPackage pkg = new TblPackage(); pkg.StrPackageCode = r["strCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull == false && ACMS.Convert.ToDecimal(pkg.MListPriceWGST) != 0) { subtotal = ACMS.Convert.ToDecimal(r["nQuantity"]) * ACMS.Convert.ToDecimal(pkg.MListPriceWGST); nettAmountwGST += subtotal; } pkg.Dispose(); } } subtotal = ACMS.Convert.ToDecimal(r["mSubTotal"]); nettAmount += subtotal; } if (myCategoryID == 11 || myCategoryID == 12) { if (nettAmount < 0) nettAmount = 0; } myReceiptMasterTable.Rows[0]["mNettAmount"] = nettAmount; if (StrDiscountCode.HasValue && StrDiscountCode.ToString().Length > 0) { TblPromotion promotion = new TblPromotion(); promotion.StrPromotionCode = myReceiptMasterTable.Rows[0]["strDiscountCode"].ToString(); promotion.SelectOne(); decimal discountValue = (decimal)(promotion.DDiscountValue.IsNull ? 0 : promotion.DDiscountValue.Value); decimal discountPercent = (decimal)(promotion.DDiscountPercent.IsNull ? 0 : promotion.DDiscountPercent.Value); decimal discountAmt = 0; if (discountPercent > 0 && discountValue <= 0) { discountAmt = decimal.Round((MNettAmount * discountPercent / 100), 2); } else { discountAmt = discountValue; } if (discountAmt > ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"])) discountAmt = ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"]); myReceiptMasterTable.Rows[0]["DiscountAmt"] = discountAmt; myReceiptMasterTable.Rows[0]["mNettAmount"] = ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"]) - discountAmt; } if (StrDeposit.ToString() != "") { isAllPricesWithGST = false; TblMemberPackage myPackage = new TblMemberPackage(); myPackage.StrReceiptNo = StrDeposit; DataTable tblMemberPkg = myPackage.SelectOneReceipt(); DataTable tblConverted = new DataTable(); DataTable tblCreditConverted = new DataTable(); if (tblMemberPkg.Rows.Count > 0) tblConverted = myPackage.SelectConvertedPackageID(System.Convert.ToInt32(tblMemberPkg.Rows[0]["nPackageID"])); TblMemberCreditPackage myCreditPackage = new TblMemberCreditPackage(); myCreditPackage.StrReceiptNo = StrDeposit; tblCreditConverted = myCreditPackage.SelectAllWstrReceiptNoLogic(); if (tblCreditConverted.Rows.Count > 0) tblConverted = myPackage.SelectConvertedPackageID(System.Convert.ToInt32(tblCreditConverted.Rows[0]["nCreditPackageID"])); if (tblConverted.Rows.Count > 0) { decimal DepositAmount = System.Convert.ToDecimal(tblConverted.Rows[0]["mConverted"]); myReceiptMasterTable.Rows[0]["mNettAmount"] = ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"]) - DepositAmount; myReceiptMasterTable.Rows[0]["strRemarks"] = "Deposit from Convert"; } //else if (tblCreditConverted.Rows.Count > 0) //{ // decimal DepositAmount = System.Convert.ToDecimal(tblCreditConverted.Rows[0]["mConverted"]); // myReceiptMasterTable.Rows[0]["mNettAmount"] = ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"]) - DepositAmount; // myReceiptMasterTable.Rows[0]["strRemarks"] = "Deposit from Credit Convert"; //} else { TblReceipt DepositReceipt = new TblReceipt(); DepositReceipt.StrReceiptNo = StrDeposit; DataTable tblDeposit = DepositReceipt.SelectOne(); decimal DepositAmount = (decimal)(DepositReceipt.MNettAmount.IsNull ? 0 : DepositReceipt.MNettAmount.Value); myReceiptMasterTable.Rows[0]["mNettAmount"] = ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"]) - decimal.Round(DepositAmount, 2); myReceiptMasterTable.Rows[0]["strRemarks"] = "Deposit from " + StrDeposit; } } //Derek Instalment Plan - Pay OS if (myCategoryID == 0) { myReceiptMasterTable.Rows[0]["mGSTAmount"] = MTotalAmount - MNettAmount; } else { if (isAllPricesNoGST) { myReceiptMasterTable.Rows[0]["mGSTAmount"] = 0; myReceiptMasterTable.Rows[0]["mTotalAmount"] = decimal.Round(MNettAmount, 2); } else { myReceiptMasterTable.Rows[0]["mGSTAmount"] = decimal.Round(MNettAmount * myGSTRate, 2); if (isAllPricesWithGST) { myReceiptMasterTable.Rows[0]["mTotalAmount"] = decimal.Round(nettAmountwGST, 2); } else { myReceiptMasterTable.Rows[0]["mTotalAmount"] = MNettAmount + MGSTAmount; } } } CalculateOutStanding(); if (WantToUpgradeMemberPackageTable.Rows.Count > 0) { double usageBal = 0; double mTotalUsageWGST = 0; //Check convert packages' price all with GST bool isConvertAllPricesWithGST=true; double mTotalUsage = 0; if (isAllPricesWithGST) { double mTotalAmount=0; for (int i = 0; i < WantToUpgradeMemberPackageTable.Rows.Count; i++) { int nCategory = Convert.ToInt32(WantToUpgradeMemberPackageTable.Rows[i]["nCategoryID"]); if (nCategory == 7 || nCategory == 36 || nCategory == 37) { TblCreditPackage pkg = new TblCreditPackage(); pkg.StrCreditPackageCode = WantToUpgradeMemberPackageTable.Rows[i]["strPackageCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull || WantToUpgradeMemberPackageTable.Rows[i]["strDiscountCode"].ToString() != "") { isConvertAllPricesWithGST = false; break; } mTotalAmount += pkg.MCreditAmount.ToDouble(); mTotalUsage += Convert.ToDouble(WantToUpgradeMemberPackageTable.Rows[i]["UsageBalAmt"]); mTotalUsageWGST += pkg.MListPriceWGST.ToDouble(); pkg.Dispose(); } else { TblPackage pkg = new TblPackage(); pkg.StrPackageCode = WantToUpgradeMemberPackageTable.Rows[i]["strPackageCode"].ToString(); pkg.SelectOne(); if (pkg.MListPriceWGST.IsNull || WantToUpgradeMemberPackageTable.Rows[i]["strDiscountCode"].ToString() != "") { isConvertAllPricesWithGST = false; break; } mTotalAmount += pkg.MListPrice.ToDouble(); mTotalUsage += Convert.ToDouble(WantToUpgradeMemberPackageTable.Rows[i]["UsageBalAmt"]); mTotalUsageWGST += pkg.MListPriceWGST.ToDouble(); pkg.Dispose(); } } if (mTotalAmount != mTotalUsage) isConvertAllPricesWithGST = false; } for (int i = 0; i < WantToUpgradeMemberPackageTable.Rows.Count; i++) { int mainSession = Convert.ToInt32(WantToUpgradeMemberPackageTable.Rows[i]["nMaxSession"]) - Convert.ToInt32(WantToUpgradeMemberPackageTable.Rows[i]["nFreeSession"]); int balSession = mainSession - Convert.ToInt32(WantToUpgradeMemberPackageTable.Rows[i]["UsedSession"]); usageBal += Convert.ToDouble(WantToUpgradeMemberPackageTable.Rows[i]["UsageBalAmt"]); } //RecalculateAfterUpgrade(Convert.ToDecimal(usageBal)); if (isConvertAllPricesWithGST && isAllPricesWithGST) { nettAmount = ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"]) - Convert.ToDecimal(usageBal); myReceiptMasterTable.Rows[0]["mNettAmount"] = decimal.Round(nettAmount, 2); myReceiptMasterTable.Rows[0]["mGSTAmount"] = decimal.Round(MNettAmount * myGSTRate, 2); myReceiptMasterTable.Rows[0]["mTotalAmount"] = decimal.Round(nettAmountwGST - Convert.ToDecimal(mTotalUsageWGST),2); myReceiptMasterTable.Rows[0]["mOutstandingAmount"] = myReceiptMasterTable.Rows[0]["mTotalAmount"]; } else { nettAmount = ACMS.Convert.ToDecimal(myReceiptMasterTable.Rows[0]["mNettAmount"]) - Convert.ToDecimal(usageBal); myReceiptMasterTable.Rows[0]["mNettAmount"] = decimal.Round(nettAmount, 2); myReceiptMasterTable.Rows[0]["mGSTAmount"] = decimal.Round(MNettAmount * myGSTRate, 2); myReceiptMasterTable.Rows[0]["mTotalAmount"] = MNettAmount + MGSTAmount; myReceiptMasterTable.Rows[0]["mOutstandingAmount"] = myReceiptMasterTable.Rows[0]["mTotalAmount"]; } } }
public void DeleteLastCreditPackageExtensionHistory(int nCreditPackageID, int last_nExtensionID, string CurrentMembershipID) { ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider(); TblMemberCreditPackage myMemberCreditPackage = new TblMemberCreditPackage(); TblCreditPackageExtension myCreditPackageExtension = new TblCreditPackageExtension(); myMemberCreditPackage.MainConnectionProvider = connProvider; myCreditPackageExtension.MainConnectionProvider = connProvider; connProvider.OpenConnection(); connProvider.BeginTransaction("SaveCreditPackageExtension"); myCreditPackageExtension.NCreditPackageID = nCreditPackageID; DataTable tblCreditPackageExtension = myCreditPackageExtension.SelectAllWnCreditPackageIDLogic(); if (tblCreditPackageExtension == null) { throw new Exception("This extension row has been deleted by others"); } else if (tblCreditPackageExtension.Rows.Count == 0) { throw new Exception("This extension row has been deleted by others"); } if (tblCreditPackageExtension.Rows.Count > 0) { DataRow[] rowList = tblCreditPackageExtension.Select(" nStatusID = 0 AND nExtensionID > " + last_nExtensionID.ToString()); if (rowList.Length > 0) // mean is not last package extension { throw new Exception("Only the most recent package extension can be deleted."); } } DataRow[] deletedDataRowList = tblCreditPackageExtension.Select("nStatusID = 0 and nExtensionID = " + last_nExtensionID, "nExtensionID", DataViewRowState.CurrentRows); if (deletedDataRowList.Length == 0) { throw new Exception("This extension row has been deleted by others"); } DateTime dtOldExpiry = Convert.ToDateTime(deletedDataRowList[0]["dtOldExpiry"]); int nCreditPackageStatusID = -1; if (DateTime.Compare(dtOldExpiry, DateTime.Now) < 0) { nCreditPackageStatusID = 1; } try { //Update Credit Package Extension set nStatusID = 1 => Deleted myCreditPackageExtension.MemberCreditPackage_ExtensionDelete(nCreditPackageID, last_nExtensionID); //Update Member Credit Package Expiry Date; nStatusID = 1 If Expired myMemberCreditPackage.MemberCreditPackage_ExtensionUpdate(nCreditPackageID, nCreditPackageStatusID, dtOldExpiry, CurrentMembershipID); connProvider.CommitTransaction(); } catch (Exception) { connProvider.RollbackTransaction("SaveCreditPackageExtension"); throw new Exception("Failed to Create New Extension"); } finally { if (connProvider.CurrentTransaction != null) { connProvider.CurrentTransaction.Dispose(); } if (connProvider.DBConnection != null) { if (connProvider.DBConnection.State == ConnectionState.Open) { connProvider.DBConnection.Close(); } } myMemberCreditPackage.MainConnactionIsCreatedLocal = true; myCreditPackageExtension.MainConnactionIsCreatedLocal = true; } }
private void SaveExtensionHistory(int nCreditPackageID, string strMembershipID, DateTime dtOldExpiry, DateTime dtNewExpiry, DateTime dtStartDate, DateTime dtEndDate, int nDaysExtended, int nStatusID, int nReasonID, string strRemarks, int nEmployeeID, DateTime dtCreateDate) { int nCreditPackageStatusID = -1; if (DateTime.Compare(dtNewExpiry, DateTime.Now) > 0) { nCreditPackageStatusID = 0; } ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider(); TblMemberCreditPackage myMemberCreditPackage = new TblMemberCreditPackage(); TblCreditPackageExtension myCreditPackageExtension = new TblCreditPackageExtension(); myMemberCreditPackage.MainConnectionProvider = connProvider; myCreditPackageExtension.MainConnectionProvider = connProvider; connProvider.OpenConnection(); connProvider.BeginTransaction("SaveCreditPackageExtension"); try { //Update MemberCreditPackage - New Expiry Date & Status ID by nCreditPackageID myMemberCreditPackage.MemberCreditPackage_ExtensionUpdate(nCreditPackageID, nCreditPackageStatusID, dtNewExpiry, strMembershipID); //Add Record to Credit Package Extension myCreditPackageExtension.NCreditPackageID = nCreditPackageID; myCreditPackageExtension.DtOldExpiry = dtOldExpiry; myCreditPackageExtension.DtNewExpiry = dtNewExpiry; myCreditPackageExtension.DtStartDate = dtStartDate; myCreditPackageExtension.DtEndDate = dtEndDate; myCreditPackageExtension.NDaysExtended = nDaysExtended; myCreditPackageExtension.NStatusID = nStatusID; myCreditPackageExtension.NReasonID = nReasonID; myCreditPackageExtension.StrRemarks = strRemarks; myCreditPackageExtension.NEmployeeID = nEmployeeID; myCreditPackageExtension.Insert(); //Commit Transaction connProvider.CommitTransaction(); //*** Remember to Disable the Update Expiry Button for Credit Packages } catch { //RollBack Transaction connProvider.RollbackTransaction("SaveCreditPackageExtension"); } finally { //connProvider.CurrentTransaction.Dispose(); //connProvider.DBConnection.Close(); if (connProvider.CurrentTransaction != null) { connProvider.CurrentTransaction.Dispose(); } if (connProvider.DBConnection != null) { if (connProvider.DBConnection.State == ConnectionState.Open) { connProvider.DBConnection.Close(); } } myMemberCreditPackage.MainConnactionIsCreatedLocal = true; myCreditPackageExtension.MainConnactionIsCreatedLocal = true; } }
private void UpdateOldPackSetDeactivate(ACMSDAL.ConnectionProvider connProvider, ACMSLogic.POS pos) { try { string strFreePackageCode, strReceiptNo; foreach (DataRow dr in pos.WantToUpgradeMemberPackageTable.Rows) { string strRemarks; if (Convert.ToInt32(dr["nCategoryID"]) == 7 || Convert.ToInt32(dr["nCategoryID"]) == 36 || Convert.ToInt32(dr["nCategoryID"]) == 37) { TblMemberCreditPackage mp = new TblMemberCreditPackage(); mp.MainConnectionProvider = connProvider; DataTable table = mp.LoadData("Select * from tblMemberCreditPackage Where nCreditPackageID = @nPackageID", new string[] { "@nPackageID" }, new object[] { dr["nPackageID"] }); strReceiptNo = table.Rows[0]["strReceiptNo"].ToString(); table.Rows[0]["nStatusID"] = 3; table.Rows[0]["strUpgradeTo"] = pos.StrReceiptNo; strRemarks = "Convert to: " + pos.StrReceiptNo; table.Rows[0]["strRemarks"] = strRemarks; mp.SaveData(table); } else if (Convert.ToInt32(dr["nCategoryID"]) == 8 || Convert.ToInt32(dr["nCategoryID"]) == 9) { DataSet dsCombo = new DataSet(); string strSQL = "select pge.*,re.strReceiptNo from tblReceiptEntries re, tblPackageGroupEntries pge where nEntryID =" + dr["nPackageID"] + " and re.strCode=pge.strPackageGroupCode"; SqlHelper.FillDataset(connection, CommandType.StoredProcedure, "UP_GETDATA", dsCombo, new string[] { "Table" }, new SqlParameter("@strSQL", strSQL)); foreach (DataRow drCombo in dsCombo.Tables["Table"].Rows) { for (int i = 1; i <= Convert.ToInt32(drCombo["nQuantity"]); i++) { TblMemberPackage mp = new TblMemberPackage(); mp.MainConnectionProvider = connProvider; DataTable table = mp.LoadData("Select top 1 mp.* from tblMemberPackage mp Where strPackageCode = @nPackageID and strReceiptNo=@strReceiptNo and nStatusID=0 and nPackageID not in (SELECT nPackageID FROM [dbo].[tblServiceSession] s WHERE nStatusID = 5 and mp.nPackageID = S.nPackageID) ", new string[] { "@nPackageID", "@strReceiptNo" }, new object[] { drCombo["strPackageCode"], drCombo["strReceiptNo"] }); strReceiptNo = drCombo["strReceiptNo"].ToString(); table.Rows[0]["nStatusID"] = 3; table.Rows[0]["strUpgradeTo"] = pos.StrReceiptNo; strRemarks = "Convert to: " + pos.StrReceiptNo; table.Rows[0]["strRemarks"] = strRemarks; mp.SaveData(table); } } } else { TblMemberPackage mp = new TblMemberPackage(); mp.MainConnectionProvider = connProvider; DataTable table = mp.LoadData("Select * from tblMemberPackage Where nPackageID = @nPackageID", new string[] { "@nPackageID" }, new object[] { dr["nPackageID"] }); strFreePackageCode = dr["strFreePkgCode"].ToString(); strReceiptNo = table.Rows[0]["strReceiptNo"].ToString(); table.Rows[0]["nStatusID"] = 3; table.Rows[0]["strUpgradeTo"] = pos.StrReceiptNo; strRemarks = "Convert to: " + pos.StrReceiptNo; table.Rows[0]["strRemarks"] = strRemarks; mp.SaveData(table); DataTable freePkgTable = mp.LoadData("select * from tblMemberPackage where strReceiptNo=@strReceiptNo and strPackageCode =@strFreePackageCode ", new string[] { "@strReceiptNo", "@strFreePackageCode" }, new object[] { strReceiptNo, strFreePackageCode }); if (freePkgTable.Rows.Count > 0) { freePkgTable.Rows[0]["nStatusID"] = 3; freePkgTable.Rows[0]["strUpgradeTo"] = pos.StrReceiptNo; freePkgTable.Rows[0]["strRemarks"] = strRemarks; mp.SaveData(freePkgTable); } } } } catch (Exception ex) { string strError = ex.Message; } }
private void ReplaceMembershipCardTransaction(ACMSDAL.ConnectionProvider connProvider, ACMSLogic.POS pos) { if (pos.NCategoryID == 20) { TblMember sqlMember = new TblMember(); sqlMember.MainConnectionProvider = connProvider; sqlMember.StrMembershipID = pos.StrMembershipID; sqlMember.SelectOne(); sqlMember.NCardStatusID = 0; sqlMember.StrCardBranchCode = "WL"; sqlMember.Update(); TblMember sqlIntroduceMember = new TblMember(); sqlIntroduceMember.MainConnectionProvider = connProvider; sqlIntroduceMember.StrIntroducerMembershipID = pos.StrMembershipID; DataTable introduceMemberTable = sqlIntroduceMember.SelectAllWstrIntroducerMembershipIDLogic(); if (introduceMemberTable != null && introduceMemberTable.Rows.Count > 0) { foreach (DataRow r in introduceMemberTable.Rows) r["StrIntroducerMembershipID"] = DBNull.Value; sqlIntroduceMember.SaveData(introduceMemberTable); } string membershipID = pos.StrMembershipID; string newStrMembershipID = ""; bool isMember = !membershipID.StartsWith("NMC"); if (!isMember) { TblCardRequest sqlCardRequest = new TblCardRequest(); TblCompany sqlCompany = new TblCompany(); sqlCompany.MainConnectionProvider = connProvider; sqlCardRequest.MainConnectionProvider = connProvider; sqlCompany.IncOne(); sqlMember.StrMembershipID = pos.StrMembershipID; DataTable memberTable = sqlMember.SelectOne(); newStrMembershipID = "NMC" + sqlCompany.NNonMembershipNo.Value.ToString(); string origStrMembershipID = sqlMember.StrMembershipID.Value; pos.StrNewMembershipID = newStrMembershipID; memberTable.Rows[0]["nMembershipNo"] = sqlCompany.NNonMembershipNo.Value; memberTable.Rows[0]["strMembershipID"] = newStrMembershipID; memberTable.Rows[0]["nCardStatusID"] = (int)CardStatusType.RequestPrint; string cmdText = "Update tblMember SET strMembershipID = @NewStrMembershipID, " + " nMembershipNo = @nMembershipNo Where strMembershipID = @OriginalStrMembershipID"; sqlMember.UpdateKey(memberTable, cmdText, "@NewStrMembershipID", newStrMembershipID, "@OriginalStrMembershipID", origStrMembershipID, new string[] {"@nMembershipNo"}, new object[] {sqlCompany.NNonMembershipNo.Value}); #region ====== Added By Albert ====== //To update member packages after changing MembershipID. TblMemberPackage mMemberPackage; mMemberPackage = new TblMemberPackage(); mMemberPackage.StrMembershipIDOld = origStrMembershipID; mMemberPackage.StrMembershipID = newStrMembershipID; mMemberPackage.UpdateAllWstrMembershipIDLogic(); TblMemberCreditPackage mMemberCreditPackage; mMemberCreditPackage = new TblMemberCreditPackage(); mMemberCreditPackage.StrMembershipIDOld = origStrMembershipID; mMemberCreditPackage.StrMembershipID = newStrMembershipID; mMemberCreditPackage.UpdateAllWstrMembershipIDLogic(); #endregion //Request print for new non member sqlCardRequest.NEmployeeID = pos.NCashierID; sqlCardRequest.NStatusID = (int)CardStatusType.RequestPrint; sqlCardRequest.StrBranchCode = pos.StrBranchCode; sqlCardRequest.StrMembershipID = "NMC" +sqlCompany.NNonMembershipNo; sqlCardRequest.DtLastEditDate = DateTime.Now; sqlCardRequest.Insert(); } else { TblCardRequest sqlCardRequest = new TblCardRequest(); TblBranch sqlBranch = new TblBranch(); sqlBranch.MainConnectionProvider = connProvider; sqlCardRequest.MainConnectionProvider = connProvider; sqlBranch.StrBranchCode = pos.StrBranchCode; sqlBranch.IncOne(); sqlMember.StrMembershipID = pos.StrMembershipID; DataTable memberTable = sqlMember.SelectOne(); newStrMembershipID = pos.StrBranchCode.TrimEnd() + ACMS.Convert.ToInt32(sqlBranch.NMembershipNo); string origStrMembershipID = sqlMember.StrMembershipID.Value; pos.StrNewMembershipID = newStrMembershipID; memberTable.Rows[0]["nMembershipNo"] = ACMS.Convert.ToInt32(sqlBranch.NMembershipNo); memberTable.Rows[0]["strMembershipID"] = newStrMembershipID; memberTable.Rows[0]["nCardStatusID"] = (int)CardStatusType.RequestPrint; string cmdText = "Update tblMember SET strMembershipID = @NewStrMembershipID, " + " nMembershipNo = @nMembershipNo Where strMembershipID = @OriginalStrMembershipID"; sqlMember.UpdateKey(memberTable, cmdText, "@NewStrMembershipID", newStrMembershipID, "@OriginalStrMembershipID", origStrMembershipID, new string[] {"@nMembershipNo"}, new object[] {ACMS.Convert.ToInt32(sqlBranch.NMembershipNo)}); #region ====== Added By Albert ====== //To update member packages after changing MembershipID. TblMemberPackage mMemberPackage; mMemberPackage = new TblMemberPackage(); mMemberPackage.StrMembershipIDOld = origStrMembershipID; mMemberPackage.StrMembershipID = newStrMembershipID; mMemberPackage.UpdateAllWstrMembershipIDLogic(); TblMemberCreditPackage mMemberCreditPackage; mMemberCreditPackage = new TblMemberCreditPackage(); mMemberCreditPackage.StrMembershipIDOld = origStrMembershipID; mMemberCreditPackage.StrMembershipID = newStrMembershipID; mMemberCreditPackage.UpdateAllWstrMembershipIDLogic(); #endregion //Request print for new non member sqlCardRequest.NEmployeeID = pos.NCashierID; sqlCardRequest.NStatusID = (int)CardStatusType.RequestPrint; sqlCardRequest.StrBranchCode = pos.StrBranchCode; sqlCardRequest.StrMembershipID = newStrMembershipID; sqlCardRequest.DtLastEditDate = DateTime.Now; sqlCardRequest.Insert(); } if (introduceMemberTable != null && introduceMemberTable.Rows.Count > 0) { foreach (DataRow r in introduceMemberTable.Rows) r["StrIntroducerMembershipID"] = newStrMembershipID; sqlIntroduceMember.SaveData(introduceMemberTable); } TblAudit sqlAudit = new TblAudit(); sqlAudit.MainConnectionProvider = connProvider; //Audit trail for request print sqlAudit.NAuditTypeID = ACMSLogic.AuditTypeID.MemberCard; sqlAudit.NEmployeeID = pos.NCashierID; sqlAudit.StrAuditEntry = "Replace member card with new ID"; sqlAudit.StrReference = newStrMembershipID; sqlAudit.DtDate = DateTime.Now; sqlAudit.Insert(); } }
private void ActionTakeWhenVoidReceiptForCategory_1_3_4_5_6_8_9_14_23(string strReceiptNo, ConnectionProvider connProvider) { //1 Fitness Package //3 PT Package //4 Spa Single Treatment //5 Spa Package //6 IPL Package //8 Fitness Combined Package //9 Spa Combined Package TblMemberPackage memberPackage = new TblMemberPackage(); memberPackage.MainConnectionProvider = connProvider; memberPackage.StrReceiptNo = strReceiptNo; DataTable table = memberPackage.SelectAllWstrReceiptNo(strReceiptNo); TblClassAttendance sqlClassAttendance = new TblClassAttendance(); TblServiceSession sqlServiceSession = new TblServiceSession(); sqlClassAttendance.MainConnectionProvider = connProvider; sqlServiceSession.MainConnectionProvider = connProvider; if (table.Rows.Count > 0) { int nPackageID = 0; foreach (DataRow r in table.Rows) { nPackageID = ACMS.Convert.ToInt32(r["nPackageID"]); sqlClassAttendance.NPackageID = nPackageID; DataTable classAttTable = sqlClassAttendance.SelectAllWnPackageIDLogic(); if (classAttTable.Rows.Count > 0) throw new Exception("The item(s) has been used, you are not allow to void the receipt"); else { sqlServiceSession.NPackageID = nPackageID; classAttTable = sqlServiceSession.SelectAllWnPackageIDLogic(); if (classAttTable.Rows.Count > 0) throw new Exception("The item(s) has been used, you are not allow to void the receipt"); } r["nEmployeeID"] = User.EmployeeID; r["nStatusID"] = 2; r["strRemarks"] = "Voided Receipt"; r["dtLastEdit"] = System.DateTime.Now; } memberPackage.SaveData(table); } TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); memberCreditPackage.MainConnectionProvider = connProvider; memberCreditPackage.StrReceiptNo = strReceiptNo; DataTable table2 = memberCreditPackage.SelectAllWstrReceiptNo(strReceiptNo); TblMemberPackage sqlMemberPackage = new TblMemberPackage(); sqlMemberPackage.MainConnectionProvider = connProvider; if (table2.Rows.Count > 0) { int nCreditPackageID = 0; foreach (DataRow r in table2.Rows) { nCreditPackageID = ACMS.Convert.ToInt32(r["nCreditPackageID"]); DataTable mpTable = sqlMemberPackage.SelectAllWnCreditPackageIDLogic(); if (mpTable.Rows.Count > 0) throw new Exception("The item(s) has been used, you are not allow to void the receipt"); r["nEmployeeID"] = User.EmployeeID; r["nStatusID"] = 2; r["strRemarks"] = "Voided Receipt"; r["dtLastEditDate"] = System.DateTime.Now; } memberCreditPackage.SaveData(table2); } }
private void ActionTakeWhenVoidReceiptForCategory_18(string strReceiptNo, ConnectionProvider connProvider) { //Top-up Spa Credit // need to find back the member credit package that been upgraded. TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); memberCreditPackage.MainConnectionProvider = connProvider; TblReceiptEntries sqlReceiptEntiries = new TblReceiptEntries(); sqlReceiptEntiries.MainConnectionProvider = connProvider; sqlReceiptEntiries.StrReceiptNo= strReceiptNo; DataTable tableReceiptEntries = sqlReceiptEntiries.SelectAllWstrReceiptNoLogic(); if (tableReceiptEntries.Rows.Count > 0) { // Get back the receiptEntries. // refer to Pos, strCode=nCreditPackageID, mSubTotal = topupAmount foreach (DataRow r in tableReceiptEntries.Rows) { if (!CheckIsRegistrationRow(r)) { int nCrdPackageID = ACMS.Convert.ToInt32(r["strCode"]); decimal topupAmt = ACMS.Convert.ToInt32(r["mSubTotal"]); memberCreditPackage.NCreditPackageID = nCrdPackageID; if (memberCreditPackage.SelectOne().Rows.Count > 0) { memberCreditPackage.MTopupAmount = ACMS.Convert.ToInt32(memberCreditPackage.MTopupAmount) - topupAmt; memberCreditPackage.Update(); } } } } }
//Derek Instalment Plan - Void Pay OS - Update Payment Plan public void VoidReceipt(string strReceiptNo, bool VoidPre) { ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider(); try { // Check Access Right here TblReceipt receipt = new TblReceipt(); TblReceiptFreebie sqlReceiptFreebie = new TblReceiptFreebie(); TblRewardsTransaction mRewardTransaction = new TblRewardsTransaction(); TblReceiptPayment sqlReceiptPayment = new TblReceiptPayment(); TblPaymentPlan myPaymentPlan = new TblPaymentPlan(); myPaymentPlan.MainConnectionProvider = connProvider; mRewardTransaction.MainConnectionProvider = connProvider; receipt.MainConnectionProvider = connProvider; sqlReceiptFreebie.MainConnectionProvider = connProvider; sqlReceiptPayment.MainConnectionProvider = connProvider; connProvider.OpenConnection(); connProvider.BeginTransaction("VoidReceipt"); receipt.StrReceiptNo = strReceiptNo; receipt.SelectOne(); int nCategoryID = receipt.NCategoryID.Value; string strBranchCode = receipt.StrBranchCode.Value; if (receipt.DtDate.Value != System.DateTime.Today && VoidPre == false) throw new Exception("Not allow to void previous data receipt. "); if (strBranchCode != User.BranchCode) throw new Exception("Not allow to void other's branches' receipt. "); receipt.FVoid = System.Data.SqlTypes.SqlBoolean.True; receipt.Update(); string strSQL; if (receipt.NCategoryID == 7 || receipt.NCategoryID == 36 || receipt.NCategoryID == 37) strSQL = "select top 1 * from tblMemberCreditPackage where strReceiptNo ='" + receipt.StrReceiptNo.ToString() + "' AND fFree=0"; else strSQL = "select top 1 * from tblMemberPackage where strReceiptNo ='" + receipt.StrReceiptNo.ToString() + "' AND fFree=0"; DataSet _ds1 = new DataSet(); SqlHelper.FillDataset(connection, CommandType.StoredProcedure, "UP_GETDATA", _ds1, new string[] { "table" }, new SqlParameter("@strSQL", strSQL)); //Roll back when package conversion if (_ds1.Tables["table"].Rows.Count > 0) { string strPkgRemark = _ds1.Tables["table"].Rows[0]["strUpgradeFrom"].ToString(); string[] rollbackPackages = strPkgRemark.ToString().Split(','); foreach (string rollbackPackage in rollbackPackages) { if (rollbackPackage.Trim() != "" && rollbackPackage.Trim() != "Null") { if (rollbackPackage.Contains("(C)")) { int nPackageID = Convert.ToInt32(rollbackPackage.Trim().Replace("(C)", "")); TblMemberCreditPackage mp2 = new TblMemberCreditPackage(); mp2.NCreditPackageID = nPackageID; mp2.SelectOne(); mp2.StrUpgradeTo = ""; mp2.StrRemarks = ""; mp2.NStatusID = 0; mp2.Update(); } else if (rollbackPackage.Contains("(B)")) { string strSQL2 = "select * from tblMemberPackage where strUpgradeTo='" + receipt.StrReceiptNo.ToString() + "' "; DataSet _ds2 = new DataSet(); SqlHelper.FillDataset(connection, CommandType.StoredProcedure, "UP_GETDATA", _ds2, new string[] { "table" }, new SqlParameter("@strSQL", strSQL2)); foreach (DataRow drComboPkg in _ds2.Tables["table"].Rows) { TblMemberPackage mp = new TblMemberPackage(); DataTable convertedPkgTable = mp.LoadData("select * from tblMemberPackage where nPackageID=" + drComboPkg["nPackageID"].ToString()); if (convertedPkgTable.Rows.Count > 0) { convertedPkgTable.Rows[0]["nStatusID"] = 0; convertedPkgTable.Rows[0]["strUpgradeTo"] = ""; convertedPkgTable.Rows[0]["strRemarks"] = ""; mp.SaveData(convertedPkgTable); } } } else { int nPackageID = Convert.ToInt32(rollbackPackage.Trim()); TblMemberPackage mp2 = new TblMemberPackage(); mp2.NPackageID = nPackageID; mp2.SelectOne(); mp2.StrUpgradeTo = ""; mp2.StrRemarks = ""; mp2.NStatusID = 0; mp2.Update(); //rollback free package if have any TblMemberPackage mp3 = new TblMemberPackage(); string strFreePackageCode = ""; string strSQL3 = "select strFreePkgCode from tblPackage where strPackageCode='" + Convert.ToString(mp2.StrPackageCode) + "' "; DataSet _ds = new DataSet(); SqlHelper.FillDataset(connection, CommandType.StoredProcedure, "UP_GETDATA", _ds, new string[] { "table" }, new SqlParameter("@strSQL", strSQL3)); if (_ds.Tables["table"].Rows.Count > 0) { strFreePackageCode = _ds.Tables["table"].Rows[0]["strFreePkgCode"].ToString(); } DataTable freePkgTable = mp3.LoadData("select * from tblMemberPackage where strReceiptNo=@strReceiptNo and strPackageCode =@strFreePackageCode ", new string[] { "@strReceiptNo", "@strFreePackageCode" }, new object[] { mp2.StrReceiptNo.ToString(), strFreePackageCode }); if (freePkgTable.Rows.Count > 0) { freePkgTable.Rows[0]["nStatusID"] = 0; freePkgTable.Rows[0]["strUpgradeTo"] = ""; freePkgTable.Rows[0]["strRemarks"] = ""; mp3.SaveData(freePkgTable); } } } } } receipt.MUpgradeAmount = System.Data.SqlTypes.SqlMoney.Null; receipt.StrRemarks = ""; receipt.Update(); #region ====== Added By Albert ====== /* * To remove reward transaction. */ mRewardTransaction.StrReferenceNo = strReceiptNo; mRewardTransaction.SelectAllWReferenceNo(); mRewardTransaction.NTypeID = 3; mRewardTransaction.Update(); #endregion //rollback used cash voucher TblReceiptPayment tblReceiptPayment = new ACMSDAL.TblReceiptPayment(); tblReceiptPayment.StrReceiptNo = strReceiptNo; DataTable tblPayment = tblReceiptPayment.SelectAllWstrReceiptNoLogic(); foreach (DataRow dr in tblPayment.Rows) { if (dr["strPaymentCode"].ToString() == "CASHVOUCHER") { TblCashVoucher sqlCV = new TblCashVoucher(); sqlCV.MainConnectionProvider = connProvider; sqlCV.StrSN = dr["strReferenceNo"].ToString(); DataTable table = sqlCV.SelectOne(); sqlCV.NStatusID = 1; sqlCV.StrRedeemedByID = System.Data.SqlTypes.SqlString.Null; sqlCV.DtRedeemedDate = System.Data.SqlTypes.SqlDateTime.Null; sqlCV.StrRedeemedBranch = System.Data.SqlTypes.SqlString.Null; sqlCV.Update(); sqlCV.SaveData(table); } } if (!receipt.StrChildReceiptNo.IsNull) { int IsVoid = 0; IsVoid = receipt.CheckIfChildReceiptVoid(receipt.StrChildReceiptNo.Value); if (IsVoid == 0) { throw new Exception("The receipt given has child receipt, please void child receipt first before void this receipt"); } } string strDepositReceiptNo = ""; if (!receipt.StrParentReceiptNo.IsNull) { TblReceiptEntries pReceipt = new TblReceiptEntries(); pReceipt.StrReceiptNo = receipt.StrParentReceiptNo.Value; pReceipt.SelectAllWstrReceiptNoLogic(); if (pReceipt.StrCode.Value != "Deposit") { nCategoryID = 0; //Check if pay outstanding receipt, reset category to 0 } else if (pReceipt.StrCode.Value == "Deposit") { strDepositReceiptNo = receipt.StrParentReceiptNo.Value; } pReceipt.Dispose(); } if (strDepositReceiptNo != "") { try { receipt.ReviveDepositForVoidMasterReceipt(strReceiptNo, strDepositReceiptNo); } catch { } } if (nCategoryID == 1 || nCategoryID == 3 || nCategoryID == 4 || nCategoryID == 5 || nCategoryID == 6 || nCategoryID == 8 || nCategoryID == 9 || nCategoryID == 14 || nCategoryID == 23) { ActionTakeWhenVoidReceiptForCategory_1_3_4_5_6_8_9_14_23(strReceiptNo, connProvider); } else if (nCategoryID == 2) { //Fitness GIRO ActionTakeWhenVoidReceiptForCategory_2(strReceiptNo, connProvider); } else if (nCategoryID == 7) { // Spa Credit Account ActionTakeWhenVoidReceiptForCategory_7(strReceiptNo, connProvider); } else if (nCategoryID == 36 || nCategoryID == 37) { // Holistic Credit Account ActionTakeWhenVoidReceiptForCategory_7(strReceiptNo, connProvider); } else if (nCategoryID == 38) { // Cash Voucher ActionTakeWhenVoidReceiptForCategory_38(strReceiptNo, connProvider); } else { DeleteFreeMemberPackage(strReceiptNo, connProvider); if (nCategoryID == 11 || nCategoryID == 12) { //ActionTakeWhenVoidReceiptForCategory_11_12(strReceiptNo, connProvider); } else if (nCategoryID == 21) { // mineral water } else if (nCategoryID == 15) { //Locker Rental } else if (nCategoryID == 0) { // Pay Outstanding ActionTakeWhenVoidReceiptForCategory_0(receipt, connProvider); //Get New Payment Plan //If Table Row Count > 0 Then Update Payment Plan //Derek Instalment Plan - Update tblPaymentPlan (if any) //Reset Payment Plan's Receipt by payment receipt No - Bool 1 Updated 0 Not Found //Get Bool If 1 //Find the Master Receipt No if 1 string strMasterReceiptNo = ""; strMasterReceiptNo = myPaymentPlan.GetInhouseIPPMasterOSReceiptSimple(strReceiptNo); if (strMasterReceiptNo != "") { if (myPaymentPlan.GetInhouseResetIPP_VoidPayOS(strReceiptNo) == 1) { DataTable paymentPlanTable = myPaymentPlan.GetInhouseAdjustedIPP_VoidPayOS(strMasterReceiptNo); if (paymentPlanTable != null && paymentPlanTable.Rows.Count > 0) { foreach (DataRow r in paymentPlanTable.Rows) { if (r["lastestUpdate"].ToString() == "1") { myPaymentPlan.IPPSubsequentUpdate(Convert.ToInt32(r["nPaymentPlanID"]), r["strReceiptNo"].ToString(), Convert.ToInt32(r["nInstalmentNo"]), Convert.ToDecimal(r["mPaidAmount"]), Convert.ToDecimal(r["mAdjustedPaymentPlanAmt"]), Convert.ToDecimal(r["mOutstandingAmt"])); } } //paymentPlanTable.AcceptChanges(); } } } } else if (nCategoryID == 18) { ActionTakeWhenVoidReceiptForCategory_18(strReceiptNo, connProvider); } else if (nCategoryID == 19) { ActionTakeWhenVoidReceiptForCategory_19(strReceiptNo, connProvider); } #region Un-support voiding /* else if (nCategoryID == 17) { //throw new Exception("Forget card's receipt is not allow to void."); //do notthing. Just void the receipt } else if (nCategoryID == 10) { //throw new Exception("Upgrade Package's receipt is not allow to void."); // do notthing. Just void the receipt. } else if (nCategoryID == 20) { //Replace Membership Card //throw new Exception("Replace member card's receipt is not allow to void."); //do notthing, just void the receipt } */ #endregion } connProvider.CommitTransaction(); } catch (Exception ex) { connProvider.RollbackTransaction("VoidReceipt"); throw ex; } finally { if (connProvider.CurrentTransaction != null) connProvider.CurrentTransaction.Dispose(); if (connProvider.DBConnection != null) { if (connProvider.DBConnection.State == ConnectionState.Open) connProvider.DBConnection.Close(); } } }
private void Init() { myCreditPkg = new TblMemberCreditPackage(); }
/// <summary> /// Use Member Credit Package means use the credit to buy the package and then store in the tblMemberPackage /// be aware some package is not allow to purchase using credit package. Must check tblCreditPackageRestriction /// </summary> /// <returns></returns> public string[,] UseMemberCreditPackage(string[,] strPackageCode, int nCreditPackageID, string strSignID, string strSigKey, string strPdfExportPath, string remark) { //ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider(); DataRow[] rows, row1s = new DataRow[strPackageCode.Length / 2]; string[,] strUsage = new string[strPackageCode.Length / 2, 3]; //DataColumn[] dc = new DataColumn["Usage",System.Type.GetType("System.Int")]; try { TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); //connProvider.OpenConnection(); //connProvider.BeginTransaction("UseMemberCreditPackage"); //memberCreditPackage.MainConnectionProvider = connProvider; memberCreditPackage.NCreditPackageID = nCreditPackageID; DataTable table = memberCreditPackage.SelectOne(); if (table == null || table.Rows.Count == 0) throw new Exception("This member credit package been deleted by others"); if (ACMS.Convert.ToInt32(table.Rows[0]["nStatusID"]) > 0) throw new Exception("This member credit package has been deleted/expired/suspended."); string strCreditPackageCode = memberCreditPackage.StrCreditPackageCode.Value; string strMembershipID = memberCreditPackage.StrMembershipID.Value; TblCreditPackageRestriction restriction = new TblCreditPackageRestriction(); restriction.StrCreditPackageCode = strCreditPackageCode; TblReceipt creditReceipt = new TblReceipt(); if (!memberCreditPackage.StrReceiptNo.IsNull) { creditReceipt.StrReceiptNo = memberCreditPackage.StrReceiptNo.Value; creditReceipt.SelectOne(); } DataTable restricttable = restriction.SelectAllWstrCreditPackageCodeLogic(); DataColumn colQuantity = new DataColumn("colQuantity", System.Type.GetType("System.Int32")); restricttable.Columns.Add(colQuantity); bool isAllowDiscount = false; if (restricttable.Rows.Count == 0) throw new Exception("No allow to use credit package for this package."); else { for (int j = 0; j < strPackageCode.Length / 2; j++) { rows = restricttable.Select("strPackageCode = '" + strPackageCode[j, 0] + "'", "strCreditPackageCode"); rows[0]["colQuantity"] = strPackageCode[j, 1]; row1s[j] = rows[0]; } if (row1s.Length == 0) throw new Exception("No allow to use credit package for this package."); // check later as got two package now //else //{ // isAllowDiscount = ACMS.Convert.ToBoolean(row1s[0]["fAllowDiscount"]); //} } // Must Check balance is enough to buy a Package or not TblCreditPackage creditPackage = new TblCreditPackage(); creditPackage.StrCreditPackageCode = memberCreditPackage.StrCreditPackageCode.Value; creditPackage.SelectOne(); decimal creditPackageValue = ACMS.Convert.ToDecimal(creditPackage.MCreditAmount); decimal mmbCreditPackageFreeCredit = ACMS.Convert.ToDecimal(creditPackage.MFreeCredit); decimal mmbCreditPackageTopupAmt = ACMS.Convert.ToDecimal(memberCreditPackage.MTopupAmount); decimal totalCreditUsage = GetCreditUsageFromMemberPackage(nCreditPackageID); decimal balance = (creditPackageValue + mmbCreditPackageTopupAmt + mmbCreditPackageFreeCredit) - totalCreditUsage; if (creditReceipt.MOutstandingAmount > 0 && !memberCreditPackage.StrReceiptNo.IsNull) { DataTable creditUsageMemberPackage = null; RefreshForPackageUsage(strMembershipID, ACMS.Convert.ToInt32(creditPackage.NCategoryID)); creditUsageMemberPackage = myDataTable; double m70PercPaidAmount = 0; if (creditUsageMemberPackage.Rows.Count > 0) m70PercPaidAmount = ACMS.Convert.ToDouble(creditUsageMemberPackage.Select("nCreditPackageID=" + nCreditPackageID)[0]["PaidAmt"]) * 0.7; if (totalCreditUsage > ACMS.Convert.ToDecimal(m70PercPaidAmount)) throw new Exception(string.Format("Total usage is more than 70% of paid amount. \n Please clear the outstanding.")); } if (balance < 0) throw new Exception(string.Format("Balance for Member Credit Package : {0} is not enough.\n Please topup your credit.", nCreditPackageID.ToString())); // Need to know here whether it is 1st use TblMemberPackage mp = new TblMemberPackage(); //mp.MainConnectionProvider = connProvider; mp.NCreditPackageID = nCreditPackageID; DataTable temptable = mp.SelectAllWnCreditPackageIDLogic(); bool is1stUseCreditPck = false; if (Convert.ToInt32(temptable.Compute("COUNT(nStatusID)", "nStatusID=0 or nStatusID=1")) == 0) { //means news insert is1stUseCreditPck = true; } int i = 0; foreach (DataRow drPackage in row1s) { for (int x = 0; x < ACMS.Convert.ToInt32(drPackage[3]); x++) // quantity { MemberPackage memberPackage = new MemberPackage(); DataTable memberPackageTable = memberPackage.New(false, strMembershipID); DataRow memberPackageRow = memberPackageTable.Rows[0]; memberPackageRow["nCreditPackageID"] = nCreditPackageID; memberPackageRow["strMembershipID"] = strMembershipID; memberPackageRow["dtPurchaseDate"] = DateTime.Now; memberPackageRow["strRemarks"] = remark; memberPackageRow["strSignatureID"] = strSignID; memberPackageRow["strSigKey"] = strSigKey; memberPackageRow["strSigPdfPath"] = strPdfExportPath; memberPackageRow["strUtilData"] = strSigKey; memberPackageRow["nStatusID"] = 0; memberPackageRow["strPackageCode"] = drPackage["strPackageCode"];//strPackageCode; TblPackage package = new TblPackage(); package.StrPackageCode = drPackage["strPackageCode"].ToString(); // strPackageCode; package.SelectOne(); decimal creditUsage = 0; decimal packageListPrice = ACMS.Convert.ToDecimal(package.MListPrice); TblMember sqlMember = new TblMember(); //Check if redeemed spa single treatment from holistic in birthday month, give 50% discount if ((creditPackage.NCategoryID == 36 || creditPackage.NCategoryID == 37) && (package.NCategoryID == 4 || (package.NCategoryID == 6 && package.NMaxSession == 1)) && sqlMember.MembershipThisMonthBirtdayForUtilised(strMembershipID, nCreditPackageID)) { DialogResult result1 = MessageBox.Show("Member is having birthday this months and having 50% discount. Do you want to utilies?", "Warning", MessageBoxButtons.YesNo); if (result1 == DialogResult.Yes) { double discountPercent = 50; memberPackageRow["strPromotionCode"] = "120046SSD"; // calcualte usage * quantity creditUsage = packageListPrice - (packageListPrice * (decimal)discountPercent / 100); } else { if (ACMS.Convert.ToBoolean(drPackage["fAllowDiscount"])) { double discountPercent = creditPackage.DCreditDiscount.Value; // calcualte usage * quantity creditUsage = packageListPrice - (packageListPrice * (decimal)discountPercent / 100); } else { creditUsage = packageListPrice; } } } else if (ACMS.Convert.ToBoolean(drPackage["fAllowDiscount"])) { double discountPercent = creditPackage.DCreditDiscount.Value; // calcualte usage * quantity creditUsage = packageListPrice - (packageListPrice * (decimal)discountPercent / 100); } else { creditUsage = packageListPrice; } decimal previousBal = balance; balance = decimal.Parse(previousBal.ToString("N2")) - decimal.Parse(creditUsage.ToString("N2")); if (balance < 0) throw new Exception(string.Format("Balance for Member Credit Package : {0} is not enough. \n Please topup your credit.", nCreditPackageID.ToString())); memberPackageRow["mCreditPackageUsagePrice"] = creditUsage; memberPackageRow["strRemarks"] = memberPackageRow["strRemarks"] + " " + x; //Initially designed for immediate kick start if (memberPackageRow["dtStartDate"].ToString() == "") { int iduration = package.NPackageDuration.Value; DateTime dtNow = DateTime.Now.Date; memberPackageRow["dtStartDate"] = dtNow; if (package.StrDurationUnit.ToString().Trim() == "DAY") memberPackageRow["dtExpiryDate"] = dtNow.AddDays(iduration - 1).AddDays(0); else if (package.StrDurationUnit.ToString().Trim() == "WEEK") { iduration = iduration * 7; memberPackageRow["dtExpiryDate"] = dtNow.AddDays(iduration - 1).AddDays(0); } else memberPackageRow["dtExpiryDate"] = dtNow.AddMonths(iduration).AddDays(-1); } mp.SaveData(memberPackageTable); strUsage[i, 0] = package.StrDescription.ToString(); strUsage[i, 1] = creditUsage.ToString(); } strUsage[i, 2] = drPackage[3].ToString(); i++; } if (is1stUseCreditPck) { if (memberCreditPackage.DtStartDate.ToString() == "Null") { memberCreditPackage.NCreditPackageID = nCreditPackageID; memberCreditPackage.DtStartDate = DateTime.Now.Date; memberCreditPackage.DtExpiryDate = DateTime.Now.Date.AddMonths(ACMS.Convert.ToInt32(creditPackage.NValidMonths)).AddDays(-1); memberCreditPackage.Update(); } } //connProvider.CommitTransaction(); } catch (Exception) { //connProvider.RollbackTransaction("UseMemberCreditPackage"); throw; } finally { //if (connProvider.CurrentTransaction != null) // connProvider.CurrentTransaction.Dispose(); //if (connProvider.DBConnection != null) //{ // if (connProvider.DBConnection.State == ConnectionState.Open) // connProvider.DBConnection.Close(); //} } return strUsage; }
public DataTable GetPrintBalanceTable(int nCreditPackageID) { TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); memberCreditPackage.NCreditPackageID = nCreditPackageID; DataTable table = memberCreditPackage.SelectOne(); TblCreditPackage creditPackage = new TblCreditPackage(); creditPackage.StrCreditPackageCode = memberCreditPackage.StrCreditPackageCode.Value; creditPackage.SelectOne(); decimal creditPackageValue = ACMS.Convert.ToDecimal(creditPackage.MCreditAmount); decimal mmbCreditPackageTopupAmt = ACMS.Convert.ToDecimal(memberCreditPackage.MTopupAmount); decimal totalCreditUsage = GetCreditUsageFromMemberPackage(nCreditPackageID); decimal balance = (creditPackageValue + mmbCreditPackageTopupAmt) - totalCreditUsage; DataTable tableToReturn = new DataTable(); DataColumn colCreditPackageID = new DataColumn("nCreditPackageID", System.Type.GetType("System.Int32")); DataColumn colBalance = new DataColumn("Balance", System.Type.GetType("System.Decimal")); DataColumn colExpiryDate = new DataColumn("ExpiryDate", System.Type.GetType("System.DateTime")); tableToReturn.Columns.Add(colBalance); tableToReturn.Columns.Add(colCreditPackageID); tableToReturn.Columns.Add(colExpiryDate); DataRow r = tableToReturn.NewRow(); r["nCreditPackageID"] = nCreditPackageID; r["Balance"] = balance; r["ExpiryDate"] = memberCreditPackage.DtExpiryDate.Value; return tableToReturn; }
public bool SavePOS(ACMSLogic.POS pos) { ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider(); //ACMSDAL.ConnectionProvider connProvider1 = new ConnectionProvider(); try { DataTable branchReceiptNoTable = new DataTable(); int latestReceiptNo = GetLatestReceiptNo(connProvider, pos, ref branchReceiptNoTable) + 1; string receiptNo = pos.StrBranchCode.ToString().Trim() + pos.NTerminalID.ToString().Trim() + latestReceiptNo.ToString().Trim(); pos.StrReceiptNo = receiptNo; //Derek Instalment Plan Need to Add PaymentPlan Table Here //Get pos.NCategoryID here to determine if the item is Pay O/S //Here Can get the new Receipt No Value //3 Main table that always need to update TblReceipt receipt = new TblReceipt(); TblReceiptEntries receiptEntries = new TblReceiptEntries(); TblReceiptPayment receiptPayment = new TblReceiptPayment(); TblPaymentPlan myPaymentPlan = new TblPaymentPlan(); receipt.MainConnectionProvider = connProvider; receiptEntries.MainConnectionProvider = connProvider; receiptPayment.MainConnectionProvider = connProvider; myPaymentPlan.MainConnectionProvider = connProvider; connProvider.OpenConnection(); connProvider.BeginTransaction("SaveReceipt"); DataTable receiptTable = pos.ReceiptMasterTable.Copy(); DataTable receiptEntriesTable = pos.ReceiptItemsTable.Copy(); DataTable receiptPaymentTable = pos.ReceiptPaymentTable.Copy(); DataTable freeMemberPackageTable = receipt.FillSchema("Select * From tblMemberPackage"); // use to store the free member package. DataTable freeMemberCreditPackageTable = receipt.FillSchema("Select * From tblMemberCreditPackage"); if (pos.PaymentPlanTable != null && pos.NCategoryID != 0) { DataTable paymentPlanTable = pos.PaymentPlanTable.Copy(); if (paymentPlanTable != null && paymentPlanTable.Rows.Count > 0) { foreach (DataRow r in paymentPlanTable.Rows) { r["strReceiptNo"] = pos.StrReceiptNo; if (r["nInstalmentNo"].ToString() == "1") { r["strPaymentReceiptNo"] = pos.StrReceiptNo; myPaymentPlan.IPPPrimaryEntry(r["strReceiptNo"].ToString(), Convert.ToInt32(r["nInstalmentNo"]), r["strPaymentReceiptNo"].ToString(), Convert.ToDecimal(r["mPaymentPlanAmt"]), Convert.ToDecimal(r["mPaidAmount"]), Convert.ToDecimal(r["mAdjustedPaymentPlanAmt"]), Convert.ToDecimal(r["mOutstandingAmt"]), Convert.ToDateTime(r["dtPaymentDate"]), Convert.ToDateTime(r["dtDueDate"]), Convert.ToDateTime(r["dtFinalDueDate"]), Convert.ToInt32(r["nPaymentPlanID"])); } else { myPaymentPlan.IPPSubsequentEntry(r["strReceiptNo"].ToString(), Convert.ToInt32(r["nInstalmentNo"]), Convert.ToDecimal(r["mPaymentPlanAmt"]), Convert.ToDecimal(r["mPaidAmount"]), Convert.ToDecimal(r["mAdjustedPaymentPlanAmt"]), Convert.ToDecimal(r["mOutstandingAmt"]), Convert.ToDateTime(r["dtDueDate"]), Convert.ToDateTime(r["dtFinalDueDate"]), Convert.ToInt32(r["nPaymentPlanID"])); } } paymentPlanTable.AcceptChanges(); } pos.PaymentPlanTable.AcceptChanges(); } else if (pos.PaymentPlanTable != null && pos.NCategoryID == 0) { DataTable paymentPlanTable = pos.PaymentPlanTable.Copy(); if (paymentPlanTable != null && paymentPlanTable.Rows.Count > 0) { foreach (DataRow r in paymentPlanTable.Rows) { if (r["lastestUpdate"].ToString() == "1") { r["strPaymentReceiptNo"] = pos.StrReceiptNo; myPaymentPlan.IPPPrimaryUpdate(Convert.ToInt32(r["nPaymentPlanID"]), r["strReceiptNo"].ToString(), Convert.ToInt32(r["nInstalmentNo"]), r["strPaymentReceiptNo"].ToString(), Convert.ToDecimal(r["mPaidAmount"]), Convert.ToDecimal(r["mAdjustedPaymentPlanAmt"]), Convert.ToDecimal(r["mOutstandingAmt"]), Convert.ToDateTime(r["dtPaymentDate"])); } else { myPaymentPlan.IPPSubsequentUpdate(Convert.ToInt32(r["nPaymentPlanID"]), r["strReceiptNo"].ToString(), Convert.ToInt32(r["nInstalmentNo"]), Convert.ToDecimal(r["mPaidAmount"]), Convert.ToDecimal(r["mAdjustedPaymentPlanAmt"]), Convert.ToDecimal(r["mOutstandingAmt"])); } } //paymentPlanTable.AcceptChanges(); } pos.PaymentPlanTable.AcceptChanges(); } receipt.SaveData(receiptTable); receiptEntries.SaveData(receiptEntriesTable); receiptPayment.SaveData(receiptPaymentTable); receiptEntries.StrReceiptNo = pos.StrReceiptNo; DataTable savedReceiptEntriesTable = receiptEntries.SelectAllWstrReceiptNoLogic(); pos.ReceiptMasterTable.AcceptChanges(); if (pos.StrFreebieCode.HasValue && pos.StrFreebieCode.ToString() != "") { //Update Bill Freebie here if (pos.ReceiptFreebieTable.Rows.Count > 0) { TblReceiptFreebie receiptFreebie = new TblReceiptFreebie(); receiptFreebie.MainConnectionProvider = connProvider; DataTable receiptFreebieTable = pos.ReceiptFreebieTable.Copy(); // Save Bill Receipt Freebie receiptFreebie.SaveData(receiptFreebieTable); //TblProductInventory proInven = new TblProductInventory(); //proInven.MainConnectionProvider = connProvider; //// deduct stock //foreach (DataRow r in receiptFreebieTable.Rows) //{ // proInven.IncreaseQuantity(r["strItemCode"].ToString(), pos.StrBranchCode, -1); //} } if (pos.ReceiptPackageTable.Rows.Count > 0) { // update package foreach (DataRow r in pos.ReceiptPackageTable.Rows) { TblCreditPackage p = new TblCreditPackage(); p.StrCreditPackageCode = r["strPackageCode"].ToString(); p.SelectOne(); if (p.StrDescription.ToString() != "Null") { DataRow rowToAdd = freeMemberCreditPackageTable.NewRow(); ACMSLogic.MemberPackage.InitMemberCreditPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strPackageCode"].ToString(), r["strPromotionCode"].ToString(), true); // Add to freeMemberPackageTable and will save freeMemberCreditPackageTable.Rows.Add(rowToAdd); } else { DataRow rowToAdd = freeMemberPackageTable.NewRow(); ACMSLogic.MemberPackage.InitMemberPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strPackageCode"].ToString(), r["strPromotionCode"].ToString(), true); // Add to freeMemberPackageTable and will save freeMemberPackageTable.Rows.Add(rowToAdd); } } } //else //{ // throw new Exception("Bill Freebie have no free any product or package although the strFreebieCode is not null"); //} } if (pos.ReceiptItemsFreebiePackageTable.Rows.Count > 0) { foreach (DataRow r in pos.ReceiptItemsFreebiePackageTable.Rows) { TblCreditPackage p = new TblCreditPackage(); p.StrCreditPackageCode = r["strPackageCode"].ToString(); p.SelectOne(); if (p.StrDescription.ToString() != "Null") { DataRow rowToAdd = freeMemberCreditPackageTable.NewRow(); ACMSLogic.MemberPackage.InitMemberCreditPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strPackageCode"].ToString(), r["strPromotionCode"].ToString(), true); // Add to freeMemberPackageTable and will save freeMemberCreditPackageTable.Rows.Add(rowToAdd); } else { DataRow rowToAdd = freeMemberPackageTable.NewRow(); // Kean Yiap if (pos.NCategoryID == 34) { MemberPackage.InitMemberPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strPackageCode"].ToString(), "", true, -1, pos.dtPackageStart, pos.NProrateDays); } else { ACMSLogic.MemberPackage.InitMemberPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strPackageCode"].ToString(), r["strPromotionCode"].ToString(), true); } // Add to freeMemberPackageTable and will save freeMemberPackageTable.Rows.Add(rowToAdd); } } } if (pos.ReceiptItemsFreebieProductTable.Rows.Count > 0) { // Update product TblReceiptFreebie receiptFreebie = new TblReceiptFreebie(); receiptFreebie.MainConnectionProvider = connProvider; DataTable receiptItemsFreebieProductTable = pos.ReceiptFreebieTable.Clone(); // i have to use this structure bcoz i wan to save to this table; foreach (DataRow r in pos.ReceiptItemsFreebieProductTable.Rows) { DataRow rowToAdd = receiptItemsFreebieProductTable.NewRow(); rowToAdd["strReceiptNo"] = pos.StrReceiptNo; rowToAdd["strItemCode"] = r["strProductCode"]; rowToAdd["strPromotionCode"] = r["strPromotionCode"]; DataRow[] tempRows = savedReceiptEntriesTable.Select("nTempEntryID = " + r["nEntryID"].ToString(), "", DataViewRowState.CurrentRows); if (tempRows.Length > 0) rowToAdd["nEntryID"] = tempRows[0]["nEntryID"]; receiptItemsFreebieProductTable.Rows.Add(rowToAdd); } receiptFreebie.SaveData(receiptItemsFreebieProductTable); //TblProductInventory proInven = new TblProductInventory(); //proInven.MainConnectionProvider = connProvider; //foreach (DataRow r in receiptItemsFreebieProductTable.Rows) //{ // proInven.IncreaseQuantity(r["strItemCode"].ToString(), pos.StrBranchCode, -1); //} } if (freeMemberPackageTable.Rows.Count > 0) { // update the member package to database TblMemberPackage memberPackage = new TblMemberPackage(); memberPackage.MainConnectionProvider = connProvider; memberPackage.SaveData(freeMemberPackageTable); } if (freeMemberCreditPackageTable.Rows.Count > 0) { // update the member package to database TblMemberCreditPackage memberPackage = new TblMemberCreditPackage(); memberPackage.MainConnectionProvider = connProvider; memberPackage.SaveData(freeMemberCreditPackageTable); } //part 2 DeleteUselessIPP(connProvider, pos); UpdateRegistrationFee(connProvider, pos); UpdateOldPackSetDeactivate(connProvider, pos); //Update when upgrade PostToMemberCreditPackage(connProvider, pos); PostToMemberPackage(connProvider, pos); UpdateUsedCashVoucher(connProvider, pos); int ParentCategoryID = pos.NCategoryID; if (pos.NCategoryID == 10) { ParentCategoryID = UpgradePackage(connProvider, pos); if (ParentCategoryID == 10) { ParentCategoryID = UpgradeCreditPackage(connProvider, pos); } } TopUpCreditPackage(connProvider, pos); TopUpSingleTreatmentTransaction(connProvider, pos); MakeDeposit(connProvider, pos); CashVoucherTransaction(connProvider, pos); LockerTransaction(connProvider, pos); ForgetCardTransaction(connProvider, pos); ReplaceMembershipCardTransaction(connProvider, pos); //MineralWaterTransaction(connProvider, pos); TblRewards rewardcode = new TblRewards(); ACMSDAL.TblCategory category = new ACMSDAL.TblCategory(); category.NCategoryID = pos.NCategoryID; category.SelectOne(); int SalesCategory = ACMS.Convert.ToInt32(category.NSalesCategoryID); //Derek Instalment Plan - Here it assigned the Category to the Pay O/S Receipt Record if (pos.NCategoryID == 0) { ParentCategoryID = PayOutstanding(connProvider, pos); pos.StrRewardsCode = rewardcode.SelectRewards(ParentCategoryID, pos.StrBranchCode); } else pos.StrRewardsCode = rewardcode.SelectRewards(pos.NCategoryID, pos.StrBranchCode); if (pos.StrRewardsCode.HasValue && pos.StrRewardsCode.ToString() != "" && pos.StrRewardsCode.ToString() != "Null") { TblRewards rewards = new TblRewards(); rewards.StrRewardsCode = pos.StrRewardsCode.ToString(); rewards.SelectOne(); double dRewardPoint = 0; double dRewardPercent = (rewards.DRewardsPercent.IsNull ? 0 : rewards.DRewardsPercent.Value); double dRewardValue = (rewards.DRewardsValue.IsNull ? 0 : rewards.DRewardsValue.Value); //jackie 23 others give 50% GIRO //if (ParentCategoryID == 23 && pos.MNettAmount > 60)//pos.MNettAmount //{ // dRewardPercent = 50; //} if (dRewardPercent > 0 && dRewardValue == 0) { decimal mnettTotal = 0; if (pos.MOutstandingAmount > 0) { mnettTotal = pos.MNettAmount - (pos.MOutstandingAmount - pos.MGSTAmount); } else { mnettTotal = pos.MNettAmount; } dRewardPoint = ((double)mnettTotal) * dRewardPercent / 100; } else { if (pos.NCategoryID == 0) { dRewardPoint = dRewardValue; } } if (pos.NThisMonthBirthday == 1) { DialogResult result1 = MessageBox.Show("Member is having birthday this months. Do you want to give double point?", "Warning", MessageBoxButtons.YesNo); if (result1 == DialogResult.Yes) dRewardPoint *= 2; } TblRewardsTransaction rewardTran = new TblRewardsTransaction(); rewardTran.MainConnectionProvider = connProvider; if (pos.NCategoryID == 20) { rewardTran.StrMembershipID = pos.StrNewMembershipID; } else { rewardTran.StrMembershipID = pos.StrMembershipID; } rewardTran.DtDate = pos.DtDate; rewardTran.NTypeID = 1; rewardTran.NEmployeeID = pos.NCashierID; rewardTran.DRewardsPoints = dRewardPoint; rewardTran.StrReferenceNo = pos.StrReceiptNo; if (dRewardPoint > 0) // rewards point > 0 then insert records //3004 { rewardTran.Insert(); } } if (pos.StrRewardsCode.ToString() == "Null") pos.StrRewardsCode = ""; DataTable QtyTable = receiptEntries.Get_StrCodeReceiptNo(pos.StrReceiptNo); //check is the receipt fully paid string Nett = pos.MNettAmount.ToString(); string Outstanding = pos.MOutstandingAmount.ToString(); //if (pos.MOutstandingAmount == 0 && (pos.NCategoryID == 11 || pos.NCategoryID == 12)) // PostToStock(connProvider, QtyTable, pos); receiptTable = pos.ReceiptMasterTable.Copy(); int PosCategory = ACMS.Convert.ToInt32(receiptTable.Rows[0]["nCategoryID"]); if (PosCategory == 24) { receiptTable.Rows[0]["fDeposit"] = true; receipt.SaveData(receiptTable); } if (pos.StrBillReferenceNo != "") { receiptTable.Rows[0]["strBillReferenceNo"] = pos.StrBillReferenceNo; receipt.SaveData(receiptTable); } if (pos.NCategoryID == 0 || pos.NCategoryID == 10) { receipt.StrReceiptNo = pos.StrReceiptNo; receipt.SelectOne(); receipt.MOutstandingAmount = Convert.ToDecimal(pos.MOutstandingAmount); receipt.NCategoryID = ParentCategoryID; receipt.Update(); //TblReceipt receipt3 = new TblReceipt(); //receipt3.StrReceiptNo = pos.StrReceiptNo; //receipt3.SelectOne(); //receipt3.MOutstandingAmount = Convert.ToDecimal(pos.MOutstandingAmount); //receipt3.NCategoryID = ParentCategoryID; //receipt3.Update(); } if (pos.StrDeposit != "") { receipt.StrReceiptNo = pos.StrDeposit; DataTable tblDeposit = receipt.SelectOne(); if (tblDeposit.Rows.Count > 0) { receipt.FDeposit = false; receipt.Update(); } else { TblMemberPackage ConvertedPackage = new TblMemberPackage(); ConvertedPackage.NPackageID = ACMS.Convert.ToSqlInt32(pos.StrDeposit); ConvertedPackage.NStatusID = 1; ConvertedPackage.UpdateConvertedPackageStatus(); } } if (pos.ReceiptItemsTable.Select("", "", DataViewRowState.ModifiedCurrent).Length > 0) { receiptEntriesTable = pos.ReceiptItemsTable.Copy(); receipt.SaveData(receiptEntriesTable); } //1503 branchReceiptNoTable.Rows[0]["nReceiptNo"] = latestReceiptNo; SaveUpToDateReceiptNo(connProvider, branchReceiptNoTable); connProvider.CommitTransaction(); if (pos.StrDeposit != "") { TblReceipt receipt2 = new TblReceipt(); receipt2.StrReceiptNo = pos.StrDeposit; receipt2.SelectOne(); receipt2.StrChildReceiptNo = receiptNo; receipt2.Update(); } return true; } catch (Exception ex) { throw ex; } finally { if (connProvider.CurrentTransaction != null) connProvider.CurrentTransaction.Dispose(); if (connProvider.DBConnection != null) { if (connProvider.DBConnection.State == ConnectionState.Open) connProvider.DBConnection.Close(); } } }
private void PostToMemberCreditPackage(ACMSDAL.ConnectionProvider connProvider, ACMSLogic.POS pos) { if (pos.NCategoryID == 7 || pos.NCategoryID == 36 || pos.NCategoryID == 37) { TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); memberCreditPackage.MainConnectionProvider = connProvider; DataTable memberCreditPackageTable = memberCreditPackage.FillSchema("Select * from tblMemberCreditPackage"); string strUpgradeFrom = ""; string strRemarks = ""; foreach (DataRow dr in pos.WantToUpgradeMemberPackageTable.Rows) { strRemarks += dr["strPackageCode"].ToString() + " / " + dr["strReceiptNo"].ToString() + " / " + dr["UsageBalAmt"].ToString() + ","; if (dr["nCategoryID"].ToString() == "7" || dr["nCategoryID"].ToString() == "36" || dr["nCategoryID"].ToString() == "37") strUpgradeFrom += dr["nPackageID"].ToString() + "(C),"; else if (dr["nCategoryID"].ToString() == "8" || dr["nCategoryID"].ToString() == "9") strUpgradeFrom += dr["nPackageID"].ToString() + "(B),"; else strUpgradeFrom += dr["nPackageID"].ToString() + ","; if (ACMS.Convert.ToInt32(dr["nCategoryID"]) == 5 && dr["strFreePkgCode"] != DBNull.Value) { TblMemberPackage mp = new TblMemberPackage(); mp.MainConnectionProvider = connProvider; DataTable freePkgTable = mp.LoadData("select * from tblMemberPackage where strReceiptNo=@strReceiptNo and strPackageCode =@strFreePackageCode ", new string[] { "@strReceiptNo", "@strFreePackageCode" }, new object[] { dr["strReceiptNo"], dr["strFreePkgCode"].ToString() }); if (freePkgTable.Rows.Count > 0) { if (dr["nCategoryID"].ToString() == "7" || dr["nCategoryID"].ToString() == "36" || dr["nCategoryID"].ToString() == "37") strUpgradeFrom += freePkgTable.Rows[0]["nPackageID"].ToString() + "(C),"; else if (dr["nCategoryID"].ToString() == "8" || dr["nCategoryID"].ToString() == "9") strUpgradeFrom += freePkgTable.Rows[0]["nPackageID"].ToString() + "(B),"; else strUpgradeFrom += freePkgTable.Rows[0]["nPackageID"].ToString() + ","; } } } if (pos.WantToUpgradeMemberPackageTable.Rows.Count > 0) { strUpgradeFrom = strUpgradeFrom.Remove(strUpgradeFrom.Length - 1, 1); strRemarks = "Convert from: " + strRemarks.Remove(strRemarks.Length - 1, 1); } foreach (DataRow r in pos.ReceiptItemsTable.Rows) { if (r["strCode"].ToString() != "JOINFEES" && r["strCode"].ToString() != "JOINFEE" && r["strCode"].ToString() != "FA") { int nQuantity = ACMS.Convert.ToInt32(r["nQuantity"]); for (int i = 0; i < nQuantity; i++) { DataRow rowToAdd = memberCreditPackageTable.NewRow(); CreditAccount.InitMemberCreditPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strCode"].ToString(), false); rowToAdd["strUpgradeFrom"] = strUpgradeFrom; rowToAdd["strRemarks"] = strRemarks; memberCreditPackageTable.Rows.Add(rowToAdd); } } } if (memberCreditPackageTable.Rows.Count > 0) memberCreditPackage.SaveData(memberCreditPackageTable); } }
private void ActionTakeWhenVoidReceiptForCategory_7(string strReceiptNo, ConnectionProvider connProvider) { TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); memberCreditPackage.MainConnectionProvider = connProvider; DataTable table = memberCreditPackage.SelectAllWstrReceiptNo(strReceiptNo); TblMemberPackage sqlMemberPackage = new TblMemberPackage(); sqlMemberPackage.MainConnectionProvider = connProvider; if (table.Rows.Count > 0) { int nCreditPackageID = 0; foreach (DataRow r in table.Rows) { nCreditPackageID = ACMS.Convert.ToInt32(r["nCreditPackageID"]); sqlMemberPackage.NCreditPackageID = nCreditPackageID; DataTable memberPackagetable = sqlMemberPackage.SelectAllWnCreditPackageIDLogic(); if (Convert.ToInt32(memberPackagetable.Compute("COUNT(nStatusID)", "nStatusID=0 OR nStatusID=1")) > 0) throw new Exception("The item(s) has been used, you are not allow to void the receipt"); r["nEmployeeID"] = User.EmployeeID; r["nStatusID"] = 2; r["strRemarks"] = "Voided Receipt"; r["dtLastEditDate"] = System.DateTime.Now; } memberCreditPackage.SaveData(table); } sqlMemberPackage.StrReceiptNo = strReceiptNo; DataTable tblMemPackage = sqlMemberPackage.SelectAllWstrReceiptNo(strReceiptNo); TblClassAttendance sqlClassAttendance = new TblClassAttendance(); TblServiceSession sqlServiceSession = new TblServiceSession(); sqlClassAttendance.MainConnectionProvider = connProvider; sqlServiceSession.MainConnectionProvider = connProvider; if (tblMemPackage.Rows.Count > 0) { int nPackageID = 0; foreach (DataRow row in tblMemPackage.Rows) { nPackageID = ACMS.Convert.ToInt32(row["nPackageID"]); sqlClassAttendance.NPackageID = nPackageID; DataTable classAttTable = sqlClassAttendance.SelectAllWnPackageIDLogic(); if (classAttTable.Rows.Count > 0) throw new Exception("The item(s) has been used, you are not allow to void the receipt"); else { sqlServiceSession.NPackageID = nPackageID; classAttTable = sqlServiceSession.SelectAllWnPackageIDLogic(); if (classAttTable.Rows.Count > 0) throw new Exception("The item(s) has been used, you are not allow to void the receipt"); } row["nEmployeeID"] = User.EmployeeID; row["nStatusID"] = 2; row["strRemarks"] = "Voided Receipt"; row["dtLastEdit"] = System.DateTime.Now; } sqlMemberPackage.SaveData(tblMemPackage); } }
private void TopUpCreditPackage(ACMSDAL.ConnectionProvider connProvider, ACMSLogic.POS pos) { if (pos.NCategoryID == 18) { TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); memberCreditPackage.MainConnectionProvider = connProvider; foreach (DataRow r in pos.ReceiptItemsTable.Rows) { int nCreditPackageID = ACMS.Convert.ToInt32(r["strCode"]); memberCreditPackage.NCreditPackageID = nCreditPackageID; memberCreditPackage.SelectOne(); memberCreditPackage.MTopupAmount = ACMS.Convert.ToDecimal(memberCreditPackage.MTopupAmount) + ACMS.Convert.ToDecimal(r["mSubTotal"]); memberCreditPackage.Update(); } } }
private int UpgradeCreditPackage(ACMSDAL.ConnectionProvider connProvider, ACMSLogic.POS pos) { int OriginalCategoryID = 10 ; if (pos.NCategoryID == 10 && pos.NoCredit != 0) { //delete the old package TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); //add back the uprade package memberCreditPackage.MainConnectionProvider = connProvider; DataTable memberCreditPackageTable = memberCreditPackage.FillSchema("Select * from tblMemberCreditPackage"); foreach (DataRow r in pos.ReceiptItemsTable.Rows) { int nQuantity = ACMS.Convert.ToInt32(r["nQuantity"]); memberCreditPackage.NCreditPackageID = ACMS.Convert.ToInt32(r[17]); memberCreditPackage.Delete(); for (int i = 0; i < nQuantity; i++) { DataRow rowToAdd = memberCreditPackageTable.NewRow(); CreditAccount.InitMemberCreditPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strCode"].ToString(), false); memberCreditPackageTable.Rows.Add(rowToAdd); } } if (memberCreditPackageTable.Rows.Count > 0) memberCreditPackage.SaveData(memberCreditPackageTable); } OriginalCategoryID= 7; return OriginalCategoryID; }
/// <summary> /// Use Member Credit Package means use the credit to buy the package and then store in the tblMemberPackage /// be aware some package is not allow to purchase using credit package. Must check tblCreditPackageRestriction /// </summary> /// <returns></returns> public string[,] UseMemberCreditPackage(string[,] strPackageCode, int nCreditPackageID, string strSignID, string strSigKey, string strPdfExportPath, string remark) { //ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider(); DataRow[] rows, row1s = new DataRow[strPackageCode.Length / 2]; string[,] strUsage = new string[strPackageCode.Length / 2, 3]; //DataColumn[] dc = new DataColumn["Usage",System.Type.GetType("System.Int")]; try { TblMemberCreditPackage memberCreditPackage = new TblMemberCreditPackage(); //connProvider.OpenConnection(); //connProvider.BeginTransaction("UseMemberCreditPackage"); //memberCreditPackage.MainConnectionProvider = connProvider; memberCreditPackage.NCreditPackageID = nCreditPackageID; DataTable table = memberCreditPackage.SelectOne(); if (table == null || table.Rows.Count == 0) { throw new Exception("This member credit package been deleted by others"); } if (ACMS.Convert.ToInt32(table.Rows[0]["nStatusID"]) > 0) { throw new Exception("This member credit package has been deleted/expired/suspended."); } string strCreditPackageCode = memberCreditPackage.StrCreditPackageCode.Value; string strMembershipID = memberCreditPackage.StrMembershipID.Value; TblCreditPackageRestriction restriction = new TblCreditPackageRestriction(); restriction.StrCreditPackageCode = strCreditPackageCode; TblReceipt creditReceipt = new TblReceipt(); if (!memberCreditPackage.StrReceiptNo.IsNull) { creditReceipt.StrReceiptNo = memberCreditPackage.StrReceiptNo.Value; creditReceipt.SelectOne(); } DataTable restricttable = restriction.SelectAllWstrCreditPackageCodeLogic(); DataColumn colQuantity = new DataColumn("colQuantity", System.Type.GetType("System.Int32")); restricttable.Columns.Add(colQuantity); bool isAllowDiscount = false; if (restricttable.Rows.Count == 0) { throw new Exception("No allow to use credit package for this package."); } else { for (int j = 0; j < strPackageCode.Length / 2; j++) { rows = restricttable.Select("strPackageCode = '" + strPackageCode[j, 0] + "'", "strCreditPackageCode"); rows[0]["colQuantity"] = strPackageCode[j, 1]; row1s[j] = rows[0]; } if (row1s.Length == 0) { throw new Exception("No allow to use credit package for this package."); } // check later as got two package now //else //{ // isAllowDiscount = ACMS.Convert.ToBoolean(row1s[0]["fAllowDiscount"]); //} } // Must Check balance is enough to buy a Package or not TblCreditPackage creditPackage = new TblCreditPackage(); creditPackage.StrCreditPackageCode = memberCreditPackage.StrCreditPackageCode.Value; creditPackage.SelectOne(); decimal creditPackageValue = ACMS.Convert.ToDecimal(creditPackage.MCreditAmount); decimal mmbCreditPackageFreeCredit = ACMS.Convert.ToDecimal(creditPackage.MFreeCredit); decimal mmbCreditPackageTopupAmt = ACMS.Convert.ToDecimal(memberCreditPackage.MTopupAmount); decimal totalCreditUsage = GetCreditUsageFromMemberPackage(nCreditPackageID); decimal balance = (creditPackageValue + mmbCreditPackageTopupAmt + mmbCreditPackageFreeCredit) - totalCreditUsage; if (creditReceipt.MOutstandingAmount > 0 && !memberCreditPackage.StrReceiptNo.IsNull) { DataTable creditUsageMemberPackage = null; RefreshForPackageUsage(strMembershipID, ACMS.Convert.ToInt32(creditPackage.NCategoryID)); creditUsageMemberPackage = myDataTable; double m70PercPaidAmount = 0; if (creditUsageMemberPackage.Rows.Count > 0) { m70PercPaidAmount = ACMS.Convert.ToDouble(creditUsageMemberPackage.Select("nCreditPackageID=" + nCreditPackageID)[0]["PaidAmt"]) * 0.7; } if (totalCreditUsage > ACMS.Convert.ToDecimal(m70PercPaidAmount)) { throw new Exception(string.Format("Total usage is more than 70% of paid amount. \n Please clear the outstanding.")); } } if (balance < 0) { throw new Exception(string.Format("Balance for Member Credit Package : {0} is not enough.\n Please topup your credit.", nCreditPackageID.ToString())); } // Need to know here whether it is 1st use TblMemberPackage mp = new TblMemberPackage(); //mp.MainConnectionProvider = connProvider; mp.NCreditPackageID = nCreditPackageID; DataTable temptable = mp.SelectAllWnCreditPackageIDLogic(); bool is1stUseCreditPck = false; if (Convert.ToInt32(temptable.Compute("COUNT(nStatusID)", "nStatusID=0 or nStatusID=1")) == 0) { //means news insert is1stUseCreditPck = true; } int i = 0; foreach (DataRow drPackage in row1s) { for (int x = 0; x < ACMS.Convert.ToInt32(drPackage[3]); x++) // quantity { MemberPackage memberPackage = new MemberPackage(); DataTable memberPackageTable = memberPackage.New(false, strMembershipID); DataRow memberPackageRow = memberPackageTable.Rows[0]; memberPackageRow["nCreditPackageID"] = nCreditPackageID; memberPackageRow["strMembershipID"] = strMembershipID; memberPackageRow["dtPurchaseDate"] = DateTime.Now; memberPackageRow["strRemarks"] = remark; memberPackageRow["strSignatureID"] = strSignID; memberPackageRow["strSigKey"] = strSigKey; memberPackageRow["strSigPdfPath"] = strPdfExportPath; memberPackageRow["strUtilData"] = strSigKey; memberPackageRow["nStatusID"] = 0; memberPackageRow["strPackageCode"] = drPackage["strPackageCode"]; //strPackageCode; TblPackage package = new TblPackage(); package.StrPackageCode = drPackage["strPackageCode"].ToString(); // strPackageCode; package.SelectOne(); decimal creditUsage = 0; decimal packageListPrice = ACMS.Convert.ToDecimal(package.MListPrice); TblMember sqlMember = new TblMember(); //Check if redeemed spa single treatment from holistic in birthday month, give 50% discount if ((creditPackage.NCategoryID == 36 || creditPackage.NCategoryID == 37) && (package.NCategoryID == 4 || (package.NCategoryID == 6 && package.NMaxSession == 1)) && sqlMember.MembershipThisMonthBirtdayForUtilised(strMembershipID, nCreditPackageID)) { DialogResult result1 = MessageBox.Show("Member is having birthday this months and having 50% discount. Do you want to utilies?", "Warning", MessageBoxButtons.YesNo); if (result1 == DialogResult.Yes) { double discountPercent = 50; memberPackageRow["strPromotionCode"] = "120046SSD"; // calcualte usage * quantity creditUsage = packageListPrice - (packageListPrice * (decimal)discountPercent / 100); } else { if (ACMS.Convert.ToBoolean(drPackage["fAllowDiscount"])) { double discountPercent = creditPackage.DCreditDiscount.Value; // calcualte usage * quantity creditUsage = packageListPrice - (packageListPrice * (decimal)discountPercent / 100); } else { creditUsage = packageListPrice; } } } else if (ACMS.Convert.ToBoolean(drPackage["fAllowDiscount"])) { double discountPercent = creditPackage.DCreditDiscount.Value; // calcualte usage * quantity creditUsage = packageListPrice - (packageListPrice * (decimal)discountPercent / 100); } else { creditUsage = packageListPrice; } decimal previousBal = balance; balance = decimal.Parse(previousBal.ToString("N2")) - decimal.Parse(creditUsage.ToString("N2")); if (balance < 0) { throw new Exception(string.Format("Balance for Member Credit Package : {0} is not enough. \n Please topup your credit.", nCreditPackageID.ToString())); } memberPackageRow["mCreditPackageUsagePrice"] = creditUsage; memberPackageRow["strRemarks"] = memberPackageRow["strRemarks"] + " " + x; //Initially designed for immediate kick start if (memberPackageRow["dtStartDate"].ToString() == "") { int iduration = package.NPackageDuration.Value; DateTime dtNow = DateTime.Now.Date; memberPackageRow["dtStartDate"] = dtNow; if (package.StrDurationUnit.ToString().Trim() == "DAY") { memberPackageRow["dtExpiryDate"] = dtNow.AddDays(iduration - 1).AddDays(0); } else if (package.StrDurationUnit.ToString().Trim() == "WEEK") { iduration = iduration * 7; memberPackageRow["dtExpiryDate"] = dtNow.AddDays(iduration - 1).AddDays(0); } else { memberPackageRow["dtExpiryDate"] = dtNow.AddMonths(iduration).AddDays(-1); } } mp.SaveData(memberPackageTable); strUsage[i, 0] = package.StrDescription.ToString(); strUsage[i, 1] = creditUsage.ToString(); } strUsage[i, 2] = drPackage[3].ToString(); i++; } if (is1stUseCreditPck) { if (memberCreditPackage.DtStartDate.ToString() == "Null") { memberCreditPackage.NCreditPackageID = nCreditPackageID; memberCreditPackage.DtStartDate = DateTime.Now.Date; memberCreditPackage.DtExpiryDate = DateTime.Now.Date.AddMonths(ACMS.Convert.ToInt32(creditPackage.NValidMonths)).AddDays(-1); memberCreditPackage.Update(); } } //connProvider.CommitTransaction(); } catch (Exception) { //connProvider.RollbackTransaction("UseMemberCreditPackage"); throw; } finally { //if (connProvider.CurrentTransaction != null) // connProvider.CurrentTransaction.Dispose(); //if (connProvider.DBConnection != null) //{ // if (connProvider.DBConnection.State == ConnectionState.Open) // connProvider.DBConnection.Close(); //} } return(strUsage); }
public void DeleteCreditPackageUsage(int nPackageID) { int nCreditPackageID; TblServiceSession ssUsage = new TblServiceSession(); ssUsage.NPackageID = nPackageID; DataTable tblUsage = ssUsage.SelectAllWnPackageIDLogic(); if (tblUsage.Rows.Count > 0) throw new Exception("You Cant deleted a Used Package."); TblMemberPackage mmbPckg = new TblMemberPackage(); mmbPckg.NPackageID = nPackageID; DataTable table = mmbPckg.SelectOne(); if (table == null || table.Rows.Count == 0) throw new Exception("The Data has been deleted from database."); mmbPckg.NStatusID = 2; mmbPckg.Update(); nCreditPackageID = mmbPckg.NCreditPackageID.Value; //Check any package redeemed from this credit package ACMSDAL.TblMemberPackage memberPackage = new TblMemberPackage(); string cmdText = "Select COUNT(*) from TblMemberPackage Where (nStatusID = 0 or nStatusID = 1) AND " + " nCreditPackageID = @nCreditPackageID "; int nExist = (int) memberPackage.ExecuteScalar(cmdText, new string [] {"@nCreditPackageID"}, new object[] {nCreditPackageID}); if (nExist==0) { TblMemberCreditPackage creditPackage = new TblMemberCreditPackage(); creditPackage.NCreditPackageID = nCreditPackageID; creditPackage.SelectOne(); creditPackage.DtStartDate = SqlDateTime.Null; creditPackage.DtExpiryDate = SqlDateTime.Null; creditPackage.Update(); } }