private void EnterCreditItemizePayment() { if (!SuspendTransactionAndContinue()) return; DialogResult loginresult = GetWriteAccessAndLogin(mclsSalesTransactionDetails.CashierID, AccessTypes.EnterCreditPayment); if (loginresult == DialogResult.OK) { LoadOptions(); if (!CheckIfOKToSell(true)) return; ContactSelectWnd clsContactWnd = new ContactSelectWnd(); clsContactWnd.EnableContactAddUpdate = GetWriteAccess(mclsSalesTransactionDetails.CashierID, AccessTypes.Contacts) == System.Windows.Forms.DialogResult.OK; clsContactWnd.SysConfigDetails = mclsSysConfigDetails; clsContactWnd.TerminalDetails = mclsTerminalDetails; clsContactWnd.HasCreditOnly = true; clsContactWnd.ShowDialog(this); DialogResult result = clsContactWnd.Result; mclsContactDetails = clsContactWnd.Details; clsContactWnd.Close(); clsContactWnd.Dispose(); if (result == DialogResult.OK) { CreditsItemizeWnd creditWnd = new CreditsItemizeWnd(); creditWnd.TerminalDetails = mclsTerminalDetails; creditWnd.SysConfigDetails = mclsSysConfigDetails; creditWnd.CashierID = mclsSalesTransactionDetails.CashierID; creditWnd.CashierName = mclsSalesTransactionDetails.CashierName; creditWnd.CustomerDetails = mclsContactDetails; creditWnd.ShowDialog(this); Keys keyData = creditWnd.KeyData; string strTransactionNoToReprint = creditWnd.TransactionNoToReprint; string strTerminalNoToReprint = creditWnd.TerminalNoToReprint; decimal AmountPaid = creditWnd.AmountPayment; decimal CashPayment = creditWnd.CashPayment; decimal ChequePayment = creditWnd.ChequePayment; decimal CreditCardPayment = creditWnd.CreditCardPayment; decimal DebitPayment = creditWnd.DebitPayment; decimal BalanceAmount = creditWnd.BalanceAmount; decimal ChangeAmount = creditWnd.ChangeAmount; DataGridViewSelectedRowCollection dgvItemsSelectedRows = creditWnd.dgvItemsSelectedRows; PaymentTypes PaymentType = creditWnd.PaymentType; ArrayList arrCashPaymentDetails = creditWnd.CashPaymentDetails; ArrayList arrChequePaymentDetails = creditWnd.ChequePaymentDetails; ArrayList arrCreditCardPaymentDetails = creditWnd.CreditCardPaymentDetails; ArrayList arrDebitPaymentDetails = creditWnd.DebitPaymentDetails; result = creditWnd.Result; // do not dispose here coz the dgvItemsSelectedRows is also disposed //creditWnd.Close(); //creditWnd.Dispose(); if (result == DialogResult.OK) { if (keyData == Keys.F12) { ReprintTransaction(strTransactionNoToReprint, strTerminalNoToReprint); return; } bool boActivateSuspendedAccount = true; if (!mclsContactDetails.CreditDetails.CreditActive) { if (MessageBox.Show("Account is InActive, would you like to re-activate? Remarks: " + Environment.NewLine + mclsContactDetails.Remarks + Environment.NewLine + Environment.NewLine + "Press [yes] to automatically activate or [no] to disregard activation.", "RetailPlus", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No) boActivateSuspendedAccount = false; } Int64 iCollectionReceiptNo = 0; if (mclsSysConfigDetails.CreditPaymentType == CreditPaymentType.MPC) { decimal decRetValue = 0; if (ShowNoControl(this, out decRetValue, decimal.Parse(iCollectionReceiptNo.ToString()), "Enter Collection Receipt (CR) No.") != System.Windows.Forms.DialogResult.OK) { MessageBox.Show("Sorry you cannot issue a Credit Payment without the collection receipt no. Please enter CR No first.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { iCollectionReceiptNo = Int64.Parse(decRetValue.ToString()); } } Cursor.Current = Cursors.WaitCursor; try { LocalDB clsLocalDB = new LocalDB(mConnection, mTransaction); mConnection = clsLocalDB.Connection; mTransaction = clsLocalDB.Transaction; mclsSalesTransactionDetails = new Data.SalesTransactionDetails(); mclsSalesTransactionDetails.TransactionItemsList = new System.Collections.Generic.List<Data.SalesTransactionItemDetails>(); mclsSalesTransactionDetails.CustomerDetails = mclsContactDetails; mclsSalesTransactionDetails.TransactionStatus = TransactionStatus.CreditPayment; mclsSalesTransactionDetails.CRNo = iCollectionReceiptNo; Data.Products clsProducts = new Data.Products(mConnection, mTransaction); mConnection = clsProducts.Connection; mTransaction = clsProducts.Transaction; if (clsProducts.Details(Data.Products.DEFAULT_CREDIT_PAYMENT_BARCODE).ProductID == 0) { clsProducts.CREATE_CREDITPAYMENT_PRODUCT(); Methods.InsertAuditLog(mclsTerminalDetails, "System Administrator", AccessTypes.EnterCreditPayment, "CREDIT PAYMENT product has been created coz it's not configured"); } /************** April 21, 2006: added transaction no. ***************/ lblCustomer.Tag = mclsContactDetails.ContactID; lblCustomer.Text = mclsContactDetails.ContactName; clsEvent.AddEvent("[" + lblCashier.Text + "] Creating " + Data.Products.DEFAULT_CREDIT_PAYMENT_BARCODE + " transaction for customer: "); LoadContact(AceSoft.RetailPlus.Data.ContactGroupCategory.CUSTOMER, mclsContactDetails); if (!this.CreateTransaction()) return; txtBarCode.Text = Data.Products.DEFAULT_CREDIT_PAYMENT_BARCODE; ReadBarCode(); int iRow = dgItems.CurrentRowIndex; Data.SalesTransactionItemDetails clsItemDetails = getCurrentRowItemDetails(); clsItemDetails.Price = AmountPaid; clsItemDetails.Amount = AmountPaid; clsItemDetails = ComputeItemTotal(clsItemDetails); // set the grossales, vat, discounts, etc.(Details); Data.SalesTransactions clsSalesTransactions = new Data.SalesTransactions(mConnection, mTransaction); mConnection = clsSalesTransactions.Connection; mTransaction = clsSalesTransactions.Transaction; ApplyChangeQuantityPriceAmountDetails(iRow, clsItemDetails, "Change Quantity, Price, Amount for Credit Payment"); // re-instantiate the status mclsSalesTransactionDetails.TransactionStatus = TransactionStatus.CreditPayment; mclsSalesTransactionDetails.AmountDue = AmountPaid; mclsSalesTransactionDetails.AmountPaid = AmountPaid; mclsSalesTransactionDetails.ChangeAmount = ChangeAmount; mclsSalesTransactionDetails.CashPayment = CashPayment; mclsSalesTransactionDetails.ChequePayment = ChequePayment; mclsSalesTransactionDetails.PaymentType = PaymentType; mclsSalesTransactionDetails.CRNo = iCollectionReceiptNo; // for assignment of payments mclsSalesTransactionDetails.PaymentDetails = AssignArrayListPayments(arrCashPaymentDetails, arrChequePaymentDetails, arrCreditCardPaymentDetails, null, arrDebitPaymentDetails); SavePayments(arrCashPaymentDetails, arrChequePaymentDetails, arrCreditCardPaymentDetails, null, arrDebitPaymentDetails); // save the details of credit payments SaveCreditPayments(dgvItemsSelectedRows, arrCashPaymentDetails, arrChequePaymentDetails, arrCreditCardPaymentDetails, null, arrDebitPaymentDetails, boActivateSuspendedAccount); //OpenDrawerDelegate opendrawerDel = new OpenDrawerDelegate(OpenDrawer); //Invoke(opendrawerDel); OpenDrawer(); //update the transaction table Int64 iTransactionID = Convert.ToInt64(lblTransNo.Tag); string strORNo = ""; // no need to put an OR no for credit payment coz it's already declared before clsSalesTransactions.Close(mclsSalesTransactionDetails.TransactionID, mclsSalesTransactionDetails.TerminalNo, strORNo, 0, 0, AmountPaid, AmountPaid, AmountPaid, 0, 0, 0, 0, 0, 0, 0, 0, 0, DiscountTypes.NotApplicable, 0, 0, 0, 0, 0, 0, 0, 0, 0, AmountPaid, CashPayment, ChequePayment, CreditCardPayment, 0, DebitPayment, 0, 0, 0, 0, PaymentType, null, null, 0, 0, null, null, mclsSalesTransactionDetails.CashierID, lblCashier.Text, TransactionStatus.CreditPayment); // 05Mar2015 : MPC - Update the CRNo as per Ms. Norma clsSalesTransactions.UpdateCRNo(mclsSalesTransactionDetails.BranchID, mclsSalesTransactionDetails.TerminalNo, mclsSalesTransactionDetails.TransactionID, mclsSalesTransactionDetails.CRNo); //UpdateTerminalReportDelegate updateterminalDel = new UpdateTerminalReportDelegate(UpdateTerminalReport); UpdateTerminalReport(TransactionStatus.CreditPayment, 0, 0, AmountPaid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CashPayment, ChequePayment, CreditCardPayment, 0, DebitPayment, 0, 0, PaymentType); //UpdateCashierReportDelegate updatecashierDel = new UpdateCashierReportDelegate(UpdateCashierReport); UpdateCashierReport(TransactionStatus.CreditPayment, 0, 0, AmountPaid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, CashPayment, ChequePayment, CreditCardPayment, 0, DebitPayment, 0, 0, PaymentType); // Sep 24, 2014 : update back the LastCheckInDate to min date Data.Contacts clsContact = new Data.Contacts(mConnection, mTransaction); mConnection = clsContact.Connection; mTransaction = clsContact.Transaction; clsContact.UpdateLastCheckInDate(mclsSalesTransactionDetails.CustomerID, Constants.C_DATE_MIN_VALUE); //enable IsCreditAllowed //already done when paying creditpayment //// 3Nov2014 : automatically deposit the change if credit payment //#region Auto deposit for creditpayment //if (mclsSysConfigDetails.WillDepositChangeOfCreditPayment) //{ // InsertAuditLog(AccessTypes.Deposit, "Auto depositing change of trx #: " + mclsSalesTransactionDetails.TransactionNo + "."); // clsEvent.AddEventLn("Auto depositing change of trx #: " + mclsSalesTransactionDetails.TransactionNo + "."); // Data.Deposits clsDeposit = new Data.Deposits(mConnection, mTransaction); // mConnection = clsDeposit.Connection; mTransaction = clsDeposit.Transaction; // Data.DepositDetails clsDepositDetails = new Data.DepositDetails() // { // BranchDetails = mclsTerminalDetails.BranchDetails, // TerminalNo = mclsTerminalDetails.TerminalNo, // Amount = mclsSalesTransactionDetails.ChangeAmount, // PaymentType = mclsSalesTransactionDetails.PaymentType, // DateCreated = DateTime.Now, // CashierID = mclsSalesTransactionDetails.CashierID, // CashierName = mclsSalesTransactionDetails.CashierName, // ContactID = mclsSalesTransactionDetails.CustomerDetails.ContactID, // ContactName = mclsSalesTransactionDetails.CustomerDetails.ContactName, // Remarks = "Auto deposit from trx #: " + mclsSalesTransactionDetails.TransactionNo + ".", // CreatedOn = DateTime.Now, // LastModified = DateTime.Now // }; // clsDeposit.Insert(clsDepositDetails); // Data.Contacts clsContact = new Data.Contacts(mConnection, mTransaction); // mConnection = clsContact.Connection; mTransaction = clsContact.Transaction; // clsContact.AddDebit(clsDepositDetails.ContactID, clsDepositDetails.Amount); // clsDeposit.CommitAndDispose(); // InsertAuditLog(AccessTypes.Deposit, "Deposit: type='" + clsDepositDetails.PaymentType.ToString("G") + "' amount='" + clsDepositDetails.Amount.ToString(",##0.#0") + "'" + " @ Branch: " + mclsTerminalDetails.BranchDetails.BranchCode); // clsEvent.AddEventLn("Done! type=" + clsDepositDetails.PaymentType.ToString("G") + " amount=" + clsDepositDetails.Amount.ToString("#,###.#0")); //} //#endregion clsSalesTransactions.CommitAndDispose(); clsLocalDB.CommitAndDispose(); InsertAuditLog(AccessTypes.CreditPayment, "Pay credit for " + mclsContactDetails.ContactName + "." + " @ Branch: " + mclsTerminalDetails.BranchDetails.BranchCode); if (mclsTerminalDetails.AutoPrint == PrintingPreference.AskFirst) if (MessageBox.Show("Would you like to print this transaction?", "RetailPlus", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, (mclsSysConfigDetails.isDefaultButtonYesInPrintTransaction ? MessageBoxDefaultButton.Button1 : MessageBoxDefaultButton.Button2)) == DialogResult.Yes) mclsTerminalDetails.AutoPrint = PrintingPreference.Normal; // print credit payment as normal transaction if not HP if (mclsSalesTransactionDetails.isConsignment) { // 18Feb2015 : Print DR only if the transaction is consignment clsEvent.AddEventLn(" printing delivery receipt as consginment...", true, mclsSysConfigDetails.WillWriteSystemLog); PrintDeliveryReceipt(); } else if (mclsSalesTransactionDetails.CustomerDetails.ContactCode == mclsSysConfigDetails.OutOfStockCustomerCode && (mclsTerminalDetails.ReceiptType == TerminalReceiptType.SalesInvoice || mclsTerminalDetails.ReceiptType == TerminalReceiptType.DeliveryReceipt || mclsTerminalDetails.ReceiptType == TerminalReceiptType.SalesInvoiceAndDR)) { clsEvent.AddEventLn(" printing out of stock orders...", true, mclsSysConfigDetails.WillWriteSystemLog); PrintOSReceipt(); } else if (mclsSalesTransactionDetails.CustomerDetails.ContactCode == mclsSysConfigDetails.WalkInCustomerCode && (mclsTerminalDetails.ReceiptType == TerminalReceiptType.SalesInvoice || mclsTerminalDetails.ReceiptType == TerminalReceiptType.DeliveryReceipt || mclsTerminalDetails.ReceiptType == TerminalReceiptType.SalesInvoiceAndDR)) { clsEvent.AddEventLn(" printing walk-in customer quote form...", true, mclsSysConfigDetails.WillWriteSystemLog); PrintWalkInReceipt(); } else if (mclsSysConfigDetails.CreditPaymentType == CreditPaymentType.Houseware) { // do another report for credit payment if HP PrintCreditPayment(); // do this twice as per request of CN trader's and CS PrintCreditPayment(); } else if (mclsTerminalDetails.ReceiptType == TerminalReceiptType.SalesInvoice || mclsTerminalDetails.ReceiptType == TerminalReceiptType.DeliveryReceipt || mclsTerminalDetails.ReceiptType == TerminalReceiptType.SalesInvoiceAndDR) { clsEvent.AddEventLn(" printing sales invoice...", true, mclsSysConfigDetails.WillWriteSystemLog); PrintCollectionReceipt(); } else { // Sep 14, 2014 Control printing in mclsFilePrinter.Write //if (mclsTerminalDetails.AutoPrint == PrintingPreference.Normal) //print items if not yet printed //{ foreach (System.Data.DataRow dr in ItemDataTable.Rows) { if (dr["Quantity"].ToString() != "VOID") { string stItemNo = "" + dr["ItemNo"].ToString(); string stProductCode = "" + dr["ProductCode"].ToString(); if (dr["MatrixDescription"].ToString() != string.Empty && dr["MatrixDescription"].ToString() != null) stProductCode += "-" + dr["MatrixDescription"].ToString(); string stProductUnitCode = "" + dr["ProductUnitCode"].ToString(); decimal decQuantity = Convert.ToDecimal(dr["Quantity"]); decimal decPrice = Convert.ToDecimal(dr["Price"]); decimal decDiscount = Convert.ToDecimal(dr["Discount"]); decimal decAmount = Convert.ToDecimal(dr["Amount"]); decimal decVAT = Convert.ToDecimal(dr["VAT"]); decimal decEVAT = Convert.ToDecimal(dr["EVAT"]); decimal decPromoApplied = Convert.ToDecimal(dr["PromoApplied"]); string stDiscountCode = "" + dr["DiscountCode"].ToString(); DiscountTypes ItemDiscountType = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), dr["ItemDiscountType"].ToString()); PrintItem(stItemNo, stProductCode, stProductUnitCode, decQuantity, decPrice, decDiscount, decPromoApplied, decAmount, decVAT, decEVAT, stDiscountCode, ItemDiscountType); } } //} // Sep 14, 2014 Control printing in mclsFilePrinter.Write PrintReportFooterSection(true, TransactionStatus.CreditPayment, 0, 0, AmountPaid, 0, 0, AmountPaid, CashPayment, ChequePayment, CreditCardPayment, 0, DebitPayment, 0, 0, ChangeAmount, arrChequePaymentDetails, arrCreditCardPaymentDetails, null, arrDebitPaymentDetails); } this.LoadOptions(); } catch (Exception ex) { InsertErrorLogToFile(ex, "ERROR!!! Credit payment procedure. Err Description: "); } Cursor.Current = Cursors.Default; } creditWnd.Close(); creditWnd.Dispose(); } } }
private void CreditsItemizeWnd_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyData) { case Keys.Escape: if (grpSearch.Visible) { grpSearch.Visible = false; dgvItems.Focus(); cmdEnter.Text = "Enter"; } else { this.Hide(); } break; case Keys.Enter: if (grpSearch.Visible) { LoadData(); } else if (Convert.ToDecimal(lblBalanceSelected.Text) > 0) { Data.Products clsProducts = new Data.Products(); if (clsProducts.Details(Data.Products.DEFAULT_CREDIT_PAYMENT_BARCODE).ProductID == 0) { clsProducts.CREATE_CREDITPAYMENT_PRODUCT(); Methods.InsertAuditLog(TerminalDetails, "System Administrator", AccessTypes.EnterCreditPayment, "CREDIT PAYMENT product has been created coz it's not configured"); } clsProducts.CommitAndDispose(); dialog = ShowPayment(); if (dialog == DialogResult.OK) { mKeyData = Keys.Enter; this.Hide(); } } else this.Hide(); break; case Keys.F3: CreditSalesWnd clsCreditSalesWnd = new CreditSalesWnd(); clsCreditSalesWnd.TerminalDetails = TerminalDetails; clsCreditSalesWnd.SysConfigDetails = mclsSysConfigDetails; clsCreditSalesWnd.CustomerDetails = mclsCustomerDetails; clsCreditSalesWnd.ShowDialog(this); clsCreditSalesWnd.Close(); clsCreditSalesWnd.Dispose(); break; case Keys.F4: CreditPaymentsWnd clsCreditPaymentsWnd = new CreditPaymentsWnd(); clsCreditPaymentsWnd.TerminalDetails = TerminalDetails; clsCreditPaymentsWnd.SysConfigDetails = mclsSysConfigDetails; clsCreditPaymentsWnd.CustomerDetails = mclsCustomerDetails; clsCreditPaymentsWnd.CashierID = CashierID; clsCreditPaymentsWnd.ShowDialog(this); DialogResult result = clsCreditPaymentsWnd.Result; mclsCustomerDetails = clsCreditPaymentsWnd.CustomerDetails; clsCreditPaymentsWnd.Close(); clsCreditPaymentsWnd.Dispose(); if (result == System.Windows.Forms.DialogResult.OK) { LoadData(); } break; case Keys.F5: if (!lblF5.Visible) return; grpSearch.Visible = !grpSearch.Visible; if (grpSearch.Visible) { txtTrxStartDate.Focus(); cmdEnter.Text = "Search"; } else { dgvItems.Focus(); cmdEnter.Text = "Enter"; } break; case Keys.F11: if (!lblF11.Visible) return; if (dgvItems.Rows.Count > 0) { PrintSOA(); } break; case Keys.F12: if (!lblF12.Visible) return; TransactionNoToReprint = ""; TerminalNoToReprint = ""; foreach (DataGridViewRow dr in dgvItems.SelectedRows) { TransactionNoToReprint = dr.Cells["TransactionNo"].Value.ToString(); TerminalNoToReprint = dr.Cells["TerminalNo"].Value.ToString(); dialog = System.Windows.Forms.DialogResult.OK; mKeyData = Keys.F12; this.Hide(); break; } break; } }