public void Setup( List <TenderEntryVO> existingTendOutList, List <TenderEntryVO> existingRefOutList, TenderTablePanelType tType, decimal remAmount) { this.tenderTableType = tType; //this.remainingAmount = remAmount; if (this.tenderTableType == TenderTablePanelType.TENDEROUT_REFUND || this.tenderTableType == TenderTablePanelType.TENDEROUT_PARTIALREFUND) { partialRefundTenderList.Clear(); GetRefundTenderList.Clear(); GetTenderList.Clear(); if (CollectionUtilities.isNotEmpty(existingTendOutList)) { //refundTenderList.AddRange(existingTendOutList); GetTenderList.AddRange(existingTendOutList); } if (this.tenderTableType == TenderTablePanelType.TENDEROUT_PARTIALREFUND) { partialRefundTenderList.AddRange(existingRefOutList); } } }
public void AddTenderEntry(TenderEntryVO tenderEntry, bool addToInternalList) { if (tenderEntry == null) { return; } string cardType = string.Empty; DataGridView dV; cardType = tenderEntry.CardTypeString ?? string.Empty; //Determine table to create data row from if (this.tenderTableType == TenderTablePanelType.TENDERIN) { dV = this.tenderInDataGridView; } else { if (this.tenderTableType == TenderTablePanelType.TENDEROUT_REFUND || this.tenderTableType == TenderTablePanelType.TENDEROUT_PARTIALREFUND) { dV = (this.tenderTableType == TenderTablePanelType.TENDEROUT_REFUND) ? this.tenderOutRefundDataGridView : this.tenderOutPurchaseDataGridView; if (!addToInternalList) { if (this.tenderTableType == TenderTablePanelType.TENDEROUT_PARTIALREFUND) { dV = this.tenderOutPartialRefundDataGridView; } else { //Initial loading of purchases noted for refund dV = this.tenderOutPurchaseDataGridView; } } else { if (initialTenderAdded) { dV = this.tenderOutRefundDataGridView; } } } else { dV = this.tenderOutPurchaseDataGridView; } } //Add common data row types string tenderType = TenderTypeStrings[(int)tenderEntry.TenderType]; //Enum.Format(typeof(TenderTypes), tenderEntry.TenderType, "g"); string refNumber = tenderEntry.ReferenceNumber ?? string.Empty; string amount = tenderEntry.Amount.ToString("C"); //Construct data row array object[] rowData = null; rowData = new string[] { tenderType, refNumber, cardType, amount }; if ((this.tenderTableType == TenderTablePanelType.TENDEROUT_REFUND || this.tenderTableType == TenderTablePanelType.TENDEROUT_PARTIALREFUND) && addToInternalList && initialTenderAdded) { string msg; if (!this.validateRefundTenderMatrix(tenderEntry, out msg)) { MessageBox.Show("Improper tender added: " + msg); return; } } /* SR 6/15/2011 Removing coupon as a MOP * //SR 12/27/2010 If the current tender entry type is coupon make sure this is the * //first type selected * if (this.tenderTableType == TenderTablePanelType.TENDERIN && tenderEntry.TenderType == TenderTypes.COUPON) * { * if (GetTenderList.Count > 0) * { * MessageBox.Show("Coupon Tender needs to be applied first. " + System.Environment.NewLine + "Please remove previously used tender types.", "Process Tender Warning"); * return; * } * }*/ //SR 03/12/2011 If the current tender entry for tender in is store credit ask for manager override //if the transaction is sale if (this.tenderTableType == TenderTablePanelType.TENDERIN && tenderEntry.TenderType == TenderTypes.STORECREDIT && GlobalDataAccessor.Instance.DesktopSession.CompleteSale) { var overrideTypes = new List <ManagerOverrideType>(); var transactionTypes = new List <ManagerOverrideTransactionType>(); var messageToShow = new StringBuilder(); messageToShow.Append("Store Credit is being used "); overrideTypes.Add(ManagerOverrideType.SCRDT); transactionTypes.Add(ManagerOverrideTransactionType.SALE); var overrideFrm = new ManageOverrides(ManageOverrides.OVERRIDE_TRIGGER) { MessageToShow = messageToShow.ToString(), ManagerOverrideTypes = overrideTypes, ManagerOverrideTransactionTypes = transactionTypes }; overrideFrm.ShowDialog(); if (!overrideFrm.OverrideAllowed) { MessageBox.Show("Manager override needed to proceed with using store credit"); return; } } //SR 12/27/2010 Check if the current tender type is cash and there is already a cash tender //type entered. In that case the amount needs to be added to the original row and should not //enter a new row //SR 2/23/2011 The same logic applies for Shop credit bool addRow = true; decimal currentRowAmount = 0.0m; if (RowIdx == -1) { if ((tenderTableType == TenderTablePanelType.TENDERIN && (tenderEntry.TenderType == TenderTypes.CASHIN || tenderEntry.TenderType == TenderTypes.STORECREDIT)) || ((tenderTableType == TenderTablePanelType.TENDEROUT_REFUND || tenderTableType == TenderTablePanelType.TENDEROUT_PARTIALREFUND) && (tenderEntry.TenderType == TenderTypes.CASHOUT || (tenderEntry.TenderType == TenderTypes.STORECREDIT && addToInternalList)))) { foreach (DataGridViewRow dgvr in dV.Rows) { var strObjVal = (dgvr.Cells.Count > 0) ? dgvr.Cells[0].Value : null; if (strObjVal != null && tenderType == strObjVal.ToString() && (tenderEntry.TenderType == TenderTypes.CASHIN || tenderEntry.TenderType == TenderTypes.CASHOUT) && (strObjVal.ToString().Equals("Cash", StringComparison.OrdinalIgnoreCase))) { var strObjVal2 = (dgvr.Cells.Count > 3) ? dgvr.Cells[3].Value : null; if (strObjVal2 != null) { var cellValStr = strObjVal2.ToString(); if (!string.IsNullOrEmpty(cellValStr) && cellValStr.Length > 1) { currentRowAmount = Utilities.GetDecimalValue(cellValStr.Substring(1)); currentCardType = string.Empty; dgvr.Cells[3].Value = amount; addRow = false; } } } if (strObjVal != null && tenderEntry.TenderType == TenderTypes.STORECREDIT && (strObjVal.ToString().Equals("Store Credit", StringComparison.OrdinalIgnoreCase))) { var strObjVal2 = (dgvr.Cells.Count > 3) ? dgvr.Cells[3].Value : null; if (strObjVal2 != null) { var cellValStr = strObjVal2.ToString(); if (!string.IsNullOrEmpty(cellValStr) && cellValStr.Length > 1) { currentRowAmount = Utilities.GetDecimalValue(cellValStr.Substring(1)); currentCardType = string.Empty; dgvr.Cells[3].Value = amount; addRow = false; } } } } } } else { currentRowAmount = Utilities.GetDecimalValue(dV.Rows[RowIdx].Cells[3].Value.ToString().Substring(1)); currentCardType = Utilities.GetStringValue(dV.Rows[RowIdx].Cells[2].Value); dV.Rows.RemoveAt(RowIdx); dV.Rows.Insert(RowIdx, rowData); addRow = false; } //Add data row array to appropriate data grid view if (addRow) { dV.Rows.Add(rowData); } //Add entry to tender list if (addToInternalList) { if (this.tenderTableType == TenderTablePanelType.TENDERIN) { if (!addRow) { int rowIdx = GetTenderList.FindIndex(tenderData => tenderData.TenderType == tenderEntry.TenderType && tenderData.CardTypeString == currentCardType); if (rowIdx >= 0) { GetTenderList.RemoveAt(rowIdx); GetTenderList.Insert(rowIdx, tenderEntry); this.adjustAmount(-currentRowAmount); } } else { this.GetTenderList.Add(tenderEntry); } } else if (this.tenderTableType == TenderTablePanelType.TENDEROUT_REFUND || this.tenderTableType == TenderTablePanelType.TENDEROUT_PARTIALREFUND) { if (!addRow) { int rowIdx = GetRefundTenderList.FindIndex(tenderData => tenderData.TenderType == tenderEntry.TenderType && tenderData.CardTypeString == currentCardType); if (rowIdx >= 0) { GetRefundTenderList.RemoveAt(rowIdx); GetRefundTenderList.Insert(rowIdx, tenderEntry); this.adjustAmount(-currentRowAmount); } } else if (initialTenderAdded) { this.GetRefundTenderList.Add(tenderEntry); } } decimal adjustTenderAmount = tenderEntry.Amount; if (this.tenderTableType == TenderTablePanelType.TENDERIN) { this.adjustAmount(adjustTenderAmount); } else if (dV != this.tenderOutPurchaseDataGridView) { this.adjustAmount(adjustTenderAmount); } } }