All,
I have a grid in a usercontrol. That grid has a column with tooltips. The tooltip content is another usercontrol that contains another grid.
I have followed numerous examples of how to accomplish this using the ToolTipManager and the RadAjaxManager.
I cannot seem to get the detail grid to display correct data after button actions. I can see the NeedDataSource event being called and I know the data is there, it is just not being refreshed.
Any and all help is greatly appreciated.
Thanks,
B
I have a grid in a usercontrol. That grid has a column with tooltips. The tooltip content is another usercontrol that contains another grid.
I have followed numerous examples of how to accomplish this using the ToolTipManager and the RadAjaxManager.
I cannot seem to get the detail grid to display correct data after button actions. I can see the NeedDataSource event being called and I know the data is there, it is just not being refreshed.
Any and all help is greatly appreciated.
Thanks,
B
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ApplyPaymentList.ascx.cs"
Inherits="LaundryLogic.Modules.LL_ARActivities.ApplyPaymentList" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<
telerik:RadScriptBlock
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function RebindCredits()
{
var masterTable = $find("<%= rgCredits.ClientID %>").get_masterTableView();
masterTable.rebind();
}
</
script
>
</
telerik:RadScriptBlock
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"rgCredits"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadToolTipManager1"
/>
<
telerik:AjaxUpdatedControl
ControlID
=
"rgCredits"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadToolTipManager
ID
=
"RadToolTipManager1"
OffsetY
=
"-1"
HideEvent
=
"ManualClose"
Width
=
"800"
Height
=
"800"
runat
=
"server"
EnableShadow
=
"true"
OnAjaxUpdate
=
"OnAjaxUpdate"
RelativeTo
=
"BrowserWindow"
Position
=
"Center"
ShowCallout
=
"false"
ShowEvent
=
"OnClick"
OnClientHide
=
"RebindCredits"
>
</
telerik:RadToolTipManager
>
<
table
width
=
"100%"
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"lblHeader1"
runat
=
"server"
CssClass
=
"moduleheader"
Text
=
"Apply Customer Payments to Invoices"
></
asp:Label
>
-
<
asp:Label
ID
=
"lblHeader2"
runat
=
"server"
CssClass
=
"moduleheader"
Text
=
"You are working on Payment Batch Number "
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
hr
/>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
asp:Label
ID
=
"lblHeader3"
runat
=
"server"
CssClass
=
"moduleheader"
Text
=
"Customer Payments in this Batch"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadGrid
ID
=
"rgCredits"
runat
=
"server"
AllowPaging
=
"True"
AllowSorting
=
"True"
AutoGenerateColumns
=
"False"
GridLines
=
"None"
EnableEmbeddedSkins
=
"False"
onneeddatasource
=
"rgCredits_NeedDataSource"
Skin
=
"Sitefinity"
onitemcommand
=
"rgCredits_ItemCommand"
onitemdatabound
=
"rgCredits_ItemDataBound"
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
>
</
HeaderContextMenu
>
<
MasterTableView
DataKeyNames
=
"ID,EntityType,EntityID"
>
<
CommandItemSettings
ExportToPdfText
=
"Export to Pdf"
></
CommandItemSettings
>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridDateTimeColumn
DataField
=
"CreditDate"
DataFormatString
=
"{0:MM/dd/yyyy}"
DataType
=
"System.DateTime"
FilterControlAltText
=
"Filter CreditDate column"
HeaderText
=
"Credit Date"
UniqueName
=
"CreditDate"
>
</
telerik:GridDateTimeColumn
>
<
telerik:GridBoundColumn
DataField
=
"AccountName"
FilterControlAltText
=
"Filter AccountName column"
HeaderText
=
"Account Name"
MaxLength
=
"20"
UniqueName
=
"AccountName"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"AccountNumber"
FilterControlAltText
=
"Filter AccountNumber column"
HeaderText
=
"Account Number"
MaxLength
=
"20"
UniqueName
=
"AccountNumber"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"ActivityTypeID"
FilterControlAltText
=
"Filter ActivityType column"
HeaderText
=
"Type"
UniqueName
=
"ActivityType"
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"rcbActivityType"
runat
=
"server"
>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblActivityType"
runat
=
"server"
Text='<%# Eval("ActivityTypeID") %>'></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"CreditIdentifier"
FilterControlAltText
=
"Filter CreditIdentifier column"
HeaderText
=
"Credit Identifier"
MaxLength
=
"20"
UniqueName
=
"CreditIdentifier"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"OriginalAmount"
HeaderText
=
"Original Amt."
UniqueName
=
"OriginalAmount"
>
<
EditItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"rntOriginalAmount"
runat
=
"server"
CausesValidation
=
"True"
DataType
=
"System.Decimal"
Type
=
"Currency"
>
</
telerik:RadNumericTextBox
>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:Label
ID
=
"lblOriginalAmount"
runat
=
"server"
Text='<%# Eval("OriginalAmount", "{0:c}") %>'></
asp:Label
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridNumericColumn
DataField
=
"RemainingAmount"
DataType
=
"System.Decimal"
DecimalDigits
=
"2"
FilterControlAltText
=
"Filter RemainingAmount column"
HeaderText
=
"Remaining Amt."
NumericType
=
"Currency"
ReadOnly
=
"True"
UniqueName
=
"RemainingAmount"
>
</
telerik:GridNumericColumn
>
<
telerik:GridBoundColumn
DataField
=
"PaymentBatchID"
Display
=
"false"
FilterControlAltText
=
"Filter Payment Batch ID column"
HeaderText
=
"Payment Batch ID"
ReadOnly
=
"true"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
ColumnEditorID
=
"GridTextBoxColumnEditor1"
DataField
=
"Notes"
FilterControlAltText
=
"Filter Notes column"
HeaderText
=
"Notes"
MaxLength
=
"500"
UniqueName
=
"Notes"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"CreatedBy"
Display
=
"False"
FilterControlAltText
=
"Filter CreatedBy column"
HeaderText
=
"Created By"
MaxLength
=
"50"
ReadOnly
=
"True"
UniqueName
=
"CreatedBy"
>
</
telerik:GridBoundColumn
>
<
telerik:GridButtonColumn
CommandName
=
"Apply"
FilterControlAltText
=
"Filter Apply column"
Text
=
"Apply This Payment"
UniqueName
=
"Apply"
>
</
telerik:GridButtonColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
cancelimageurl
=
"Cancel.gif"
editimageurl
=
"Edit.gif"
insertimageurl
=
"Update.gif"
updateimageurl
=
"Update.gif"
>
</
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
FilterMenu
EnableImageSprites
=
"False"
>
</
FilterMenu
>
</
telerik:RadGrid
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
hr
/>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
telerik:RadButton
ID
=
"rbtnPaymentBatchManagement"
runat
=
"server"
Text
=
"Batch Manager"
CausesValidation
=
"false"
onclick
=
"rbtnPaymentBatchManagement_Click"
>
<
Icon
PrimaryIconCssClass
=
"rbPrevious"
/>
</
telerik:RadButton
>
</
td
>
</
tr
>
</
table
>
using
DotNetNuke.Common;
using
EntitySpaces.Interfaces;
using
System;
using
System.Collections.Generic;
using
System.Data;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
namespace
LaundryLogic.Modules.LL_ARActivities
{
public
partial
class
ApplyPaymentList : LL_ARActivitiesModuleBase
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(Request[
"PaymentBatchID"
] !=
null
)
{
lblHeader2.Text = lblHeader2.Text + Request[
"PaymentBatchID"
].ToString();
}
}
protected
void
rgCredits_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
DataTable oDTMaster =
new
DataTable();
DataTable oDTStandard =
new
DataTable();
DataTable oDT =
new
DataTable();
oDTMaster = LoadMasterPayments();
oDTStandard = LoadStandardPayments();
oDT.Merge(oDTMaster);
oDT.Merge(oDTStandard);
if
(oDT !=
null
)
{
rgCredits.DataSource = oDT;
}
else
{
rgCredits.DataSource =
new
object
[0];
}
}
private
DataTable LoadMasterPayments()
{
LaundryLogicDAL.ARCreditsQuery oARCQ =
new
LaundryLogicDAL.ARCreditsQuery(
"arc"
);
LaundryLogicDAL.ARActivityTypeQuery oARATQ =
new
LaundryLogicDAL.ARActivityTypeQuery(
"arat"
);
LaundryLogicDAL.ARAccountsQuery oARAQ =
new
LaundryLogicDAL.ARAccountsQuery(
"araq"
);
LaundryLogicDAL.ARMasterQuery oARMQ =
new
LaundryLogicDAL.ARMasterQuery(
"armq"
);
DataTable oDT =
new
DataTable();
DataTable oDTStandard =
new
DataTable();
try
{
oARCQ.es2.Connection.Name =
"NAS"
;
oARCQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARATQ.es2.Connection.Name =
"NAS"
;
oARATQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARAQ.es2.Connection.Name =
"NAS"
;
oARAQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARMQ.es2.Connection.Name =
"NAS"
;
oARMQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARCQ.Select(
oARCQ.Id,
oARCQ.EntityType,
oARCQ.EntityID,
oARMQ.AccountName,
"<'N/A' AS [AccountNumber]>"
,
oARCQ.CreditDate,
oARCQ.ActivityTypeID,
oARATQ.ActivityType,
oARCQ.CreditIdentifier,
oARCQ.OriginalAmount,
oARCQ.RemainingAmount,
oARCQ.Notes,
oARCQ.PaymentBatchID,
oARCQ.CreatedBy,
oARCQ.CreateDate
);
oARCQ.InnerJoin(oARATQ).On(oARCQ.ActivityTypeID == oARATQ.Id);
oARCQ.InnerJoin(oARMQ).On(oARCQ.EntityID == oARMQ.Id);
oARCQ.Where(oARCQ.EntityType ==
"Master"
);
if
(Request[
"PaymentBatchID"
] !=
null
)
{
oARCQ.Where(oARCQ.PaymentBatchID == Convert.ToInt16(Request[
"PaymentBatchID"
]));
}
return
oARCQ.LoadDataTable();
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
return
null
;
}
finally
{
//oARCC.Dispose();
//oARCC = null;
oARCQ =
null
;
oARATQ =
null
;
oARAQ =
null
;
oARMQ =
null
;
oDT =
null
;
}
}
private
DataTable LoadStandardPayments()
{
LaundryLogicDAL.ARCreditsQuery oARCQ =
new
LaundryLogicDAL.ARCreditsQuery(
"arc"
);
LaundryLogicDAL.ARActivityTypeQuery oARATQ =
new
LaundryLogicDAL.ARActivityTypeQuery(
"arat"
);
LaundryLogicDAL.ARAccountsQuery oARAQ =
new
LaundryLogicDAL.ARAccountsQuery(
"araq"
);
LaundryLogicDAL.ARMasterQuery oARMQ =
new
LaundryLogicDAL.ARMasterQuery(
"armq"
);
DataTable oDT =
new
DataTable();
DataTable oDTStandard =
new
DataTable();
try
{
oARCQ.es2.Connection.Name =
"NAS"
;
oARCQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARATQ.es2.Connection.Name =
"NAS"
;
oARATQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARAQ.es2.Connection.Name =
"NAS"
;
oARAQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARMQ.es2.Connection.Name =
"NAS"
;
oARMQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARCQ.Select(
oARCQ.Id,
oARCQ.EntityType,
oARCQ.EntityID,
oARAQ.AccountName,
oARAQ.Account.As(
"AccountNumber"
),
oARCQ.CreditDate,
oARCQ.ActivityTypeID,
oARATQ.ActivityType,
oARCQ.CreditIdentifier,
oARCQ.OriginalAmount,
oARCQ.RemainingAmount,
oARCQ.Notes,
oARCQ.PaymentBatchID,
oARCQ.CreatedBy,
oARCQ.CreateDate
);
oARCQ.InnerJoin(oARATQ).On(oARCQ.ActivityTypeID == oARATQ.Id);
oARCQ.InnerJoin(oARAQ).On(oARCQ.EntityID == oARAQ.Id);
oARCQ.Where(oARCQ.EntityType ==
"Standard"
);
if
(Request[
"PaymentBatchID"
] !=
null
)
{
oARCQ.Where(oARCQ.PaymentBatchID == Convert.ToInt16(Request[
"PaymentBatchID"
]));
}
return
oARCQ.LoadDataTable();
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
return
null
;
}
finally
{
//oARCC.Dispose();
//oARCC = null;
oARCQ =
null
;
oARATQ =
null
;
oARAQ =
null
;
oARMQ =
null
;
oDT =
null
;
}
}
protected
void
rbtnPaymentBatchManagement_Click(
object
sender, EventArgs e)
{
Response.Redirect(Globals.NavigateURL(),
true
);
}
protected
void
OnAjaxUpdate(
object
sender, ToolTipUpdateEventArgs args)
{
this
.UpdateToolTip(args.Value, args.UpdatePanel);
rgCredits.Rebind();
}
private
void
UpdateToolTip(
string
elementID, UpdatePanel panel)
{
string
[] separator =
new
string
[] {
"|"
};
string
[] arrElementID = elementID.Split(separator,StringSplitOptions.None);
ApplyPayments oApplyPayments = (ApplyPayments)LoadControl(
"ApplyPayments.ascx"
);
oApplyPayments.ID =
"ApplyPayments1"
;
panel.ContentTemplateContainer.Controls.Add(oApplyPayments);
oApplyPayments.EntityType = arrElementID[1].ToString();
oApplyPayments.EntityID = Convert.ToInt16(arrElementID[2]);
oApplyPayments.PaymentID = Convert.ToInt16(arrElementID[0]);
RadGrid rgDebits = (RadGrid)oApplyPayments.FindControl(
"rgDebits"
);
RadAjaxManager1.AjaxSettings.AddAjaxSetting(rgDebits, oApplyPayments);
}
protected
void
rgCredits_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item.ItemType == GridItemType.Item || e.Item.ItemType == GridItemType.AlternatingItem)
{
int
iPaymentID = (
int
)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"ID"
];
string
sEntityType = e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"EntityType"
].ToString();
int
iEntityID = (
int
)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex][
"EntityID"
];
GridDataItem oDataItem = (GridDataItem)e.Item;
LinkButton lnkTarget = (LinkButton)oDataItem[
"Apply"
].Controls[0];
if
(!Object.Equals(lnkTarget,
null
))
{
lnkTarget.Attributes.Add(
"onclick"
,
"javascript:return false;"
);
if
(!Object.Equals(
this
.RadToolTipManager1,
null
))
{
//Add the button (target) id to the tooltip manager
string
sValue = iPaymentID.ToString() +
"|"
+ sEntityType +
"|"
+ iEntityID.ToString();
this
.RadToolTipManager1.TargetControls.Add(lnkTarget.ClientID, sValue,
true
);
}
}
}
}
protected
void
rgCredits_ItemCommand(
object
source, GridCommandEventArgs e)
{
if
(e.CommandName ==
"Sort"
|| e.CommandName ==
"Page"
)
{
RadToolTipManager1.TargetControls.Clear();
}
}
}
}
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ApplyPayments.ascx.cs"
Inherits="LaundryLogic.Modules.LL_ARActivities.ApplyPayments" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<
link
href
=
"module.css"
rel
=
"stylesheet"
type
=
"text/css"
/>
<
table
width
=
"100%"
>
<
tr
>
<
td
width
=
"20%"
colspan
=
"5"
>
<
asp:Label
ID
=
"lblCustomerPaymentHeader"
CssClass
=
"moduleheader"
runat
=
"server"
Text
=
"Apply Customer Payment"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
width
=
"20%"
>
</
td
>
<
td
colspan
=
"4"
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"5"
>
<
div
class
=
"divborder"
>
<
table
>
<
tr
>
<
td
align
=
"left"
>
<
asp:Label
ID
=
"lblCustomerSelectedCaption"
runat
=
"server"
Text
=
"Customer Selected:"
></
asp:Label
>
</
td
>
<
td
>
<
asp:Label
ID
=
"lblAccountNumber"
runat
=
"server"
></
asp:Label
>
</
td
>
<
td
>
<
asp:Label
ID
=
"lblAccountName"
runat
=
"server"
></
asp:Label
>
</
td
>
<
td
align
=
"left"
>
<
asp:Label
ID
=
"lblMasterCaption"
runat
=
"server"
Text
=
"Master?"
></
asp:Label
>
</
td
>
<
td
>
<
asp:Label
ID
=
"lblIsMasterAccount"
runat
=
"server"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
>
<
asp:Label
ID
=
"lblCreditIdentifierHeader"
runat
=
"server"
Text
=
"Payment/Check Number:"
></
asp:Label
>
</
td
>
<
td
colspan
=
"4"
>
<
asp:Label
ID
=
"lblCreditIdentifier"
runat
=
"server"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
>
<
asp:Label
ID
=
"lblCreditDateHeader"
runat
=
"server"
Text
=
"Payment/Credit Date:"
></
asp:Label
>
</
td
>
<
td
colspan
=
"4"
>
<
asp:Label
ID
=
"lblCreditDate"
runat
=
"server"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
>
<
asp:Label
ID
=
"lblPaymentActivityTypeHeader"
runat
=
"server"
Text
=
"Payment/Credit Type:"
></
asp:Label
>
</
td
>
<
td
colspan
=
"4"
>
<
asp:Label
ID
=
"lblPaymentActivityType"
runat
=
"server"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
>
<
asp:Label
ID
=
"lblPaymentAmountHeader"
runat
=
"server"
Text
=
"Payment/Credit Amount:"
></
asp:Label
>
</
td
>
<
td
colspan
=
"4"
>
<
asp:Label
ID
=
"lblPaymentAmount"
runat
=
"server"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
align
=
"left"
>
<
asp:Label
ID
=
"lblPaymentRemainingHeader"
runat
=
"server"
Text
=
"Amount Remaining:"
></
asp:Label
>
</
td
>
<
td
colspan
=
"4"
>
<
asp:Label
ID
=
"lblPaymentRemaining"
runat
=
"server"
></
asp:Label
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
td
>
</
tr
>
<
tr
>
<
td
>
</
td
>
<
td
colspan
=
"4"
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"5"
>
<
asp:Label
ID
=
"lblOpenInvoicesHeader"
CssClass
=
"moduleheader"
runat
=
"server"
Text
=
"Open Invoices"
></
asp:Label
>
</
td
>
</
tr
>
<
tr
>
<
td
>
</
td
>
<
td
colspan
=
"4"
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"5"
>
<
asp:Button
ID
=
"btnAutoApply"
runat
=
"server"
OnClick
=
"btnAutoApply_Click"
Text
=
"AutoApply"
ToolTip
=
"Automatically apply payment to as many invoices as possible beginning with the oldest invoice"
/>
<
asp:Button
ID
=
"btnRollbackAll"
runat
=
"server"
onclick
=
"btnRollbackAll_Click"
Text
=
"Rollback All"
/>
<
asp:Button
ID
=
"btnRollbackSelected"
runat
=
"server"
onclick
=
"btnRollbackSelected_Click"
Text
=
"Rollback Selected"
CommandName
=
"RollbackSelected"
/>
<
asp:Button
ID
=
"btnClearAll"
runat
=
"server"
OnClick
=
"btnClearAll_Click"
Text
=
"Clear All"
/>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"5"
>
<
telerik:RadGrid
Width
=
"100%"
ID
=
"rgDebits"
runat
=
"server"
AutoGenerateColumns
=
"False"
GridLines
=
"None"
OnNeedDataSource
=
"rgDebits_NeedDataSource"
OnItemCreated
=
"rgDebits_ItemCreated"
OnSortCommand
=
"rgDebits_SortCommand"
Skin
=
"Sitefinity"
EnableEmbeddedSkins
=
"False"
onprerender
=
"rgDebits_PreRender"
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
>
</
HeaderContextMenu
>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
ValidationSettings
EnableValidation
=
"False"
/>
<
MasterTableView
EditMode
=
"InPlace"
DataKeyNames
=
"ID"
AllowPaging
=
"True"
ShowFooter
=
"false"
>
<
CommandItemSettings
ExportToPdfText
=
"Export to Pdf"
></
CommandItemSettings
>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
>
<
HeaderStyle
Width
=
"20px"
></
HeaderStyle
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridTemplateColumn
FilterControlAltText
=
"Filter TemplateColumn column"
HeaderText
=
"Apply?"
UniqueName
=
"Apply"
>
<
EditItemTemplate
>
<
asp:CheckBox
ID
=
"chkApply"
runat
=
"server"
AutoPostBack
=
"True"
OnCheckedChanged
=
"chkApply_CheckedChanged"
/>
</
EditItemTemplate
>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"chkApply"
runat
=
"server"
AutoPostBack
=
"True"
OnCheckedChanged
=
"chkApply_CheckedChanged"
/>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
FilterControlAltText
=
"Filter AmountApplied column"
HeaderText
=
"Amount Applied"
UniqueName
=
"AmountApplied"
>
<
EditItemTemplate
>
<
telerik:RadNumericTextBox
ID
=
"txtAmountApplied"
runat
=
"server"
Type
=
"Currency"
>
</
telerik:RadNumericTextBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"Account"
DataType
=
"System.String"
FilterControlAltText
=
"Filter Account column"
HeaderText
=
"Account Number"
ReadOnly
=
"true"
UniqueName
=
"Account"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"AccountName"
FilterControlAltText
=
"Filter AccountName column"
HeaderText
=
"Account Name"
ReadOnly
=
"True"
UniqueName
=
"AccountName"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"DebitDate"
DataType
=
"System.DateTime"
FilterControlAltText
=
"Filter DebitDate column"
DataFormatString
=
"{0:d}"
HeaderText
=
"Debit Date"
ReadOnly
=
"True"
UniqueName
=
"DebitDate"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"DebitIdentifier"
FilterControlAltText
=
"Filter DebitIdentifier column"
HeaderText
=
"Debit Id"
MaxLength
=
"20"
ReadOnly
=
"True"
UniqueName
=
"DebitIdentifier"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
AllowSorting
=
"False"
DataField
=
"OriginalAmount"
DataFormatString
=
"{0:C2}"
DataType
=
"System.Decimal"
FilterControlAltText
=
"Filter OriginalAmount column"
HeaderText
=
"Original Amount"
ReadOnly
=
"True"
UniqueName
=
"OriginalAmount"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"RemainingAmount"
DataFormatString
=
"{0:C2}"
DataType
=
"System.Decimal"
FilterControlAltText
=
"Filter RemainingAmount column"
HeaderText
=
"Remaining Amount"
ReadOnly
=
"True"
UniqueName
=
"RemainingAmount"
AllowSorting
=
"False"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
>
</
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
FilterMenu
EnableImageSprites
=
"False"
>
</
FilterMenu
>
</
telerik:RadGrid
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"5"
>
<
telerik:RadButton
runat
=
"server"
ID
=
"rbtnApply"
OnClick
=
"cmdApply_Click"
Text
=
"Done with Applications"
>
<
Icon
PrimaryIconCssClass
=
"rbPrevious"
/>
</
telerik:RadButton
>
</
td
>
</
tr
>
</
table
>
using
EntitySpaces.Interfaces;
using
System;
using
System.Collections.Generic;
using
System.Data;
using
System.Globalization;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
Telerik.Web.UI;
namespace
LaundryLogic.Modules.LL_ARActivities
{
public
partial
class
ApplyPayments : LL_ARActivitiesModuleBase
{
private
string
msEntityType;
private
int
miEntityID;
private
double
sum = 0;
public
string
EntityType
{
set
{
Session[
"EntityType"
] = value;
}
}
public
int
EntityID
{
set
{
Session[
"EntityID"
] = value;
}
}
public
int
PaymentID
{
set
{
int
iEntityID = 0;
string
sEntityType =
""
;
Session[
"PaymentID"
] = value;
LoadAccountInfo(Session[
"EntityType"
].ToString(), (
int
)Session[
"EntityID"
]);
LoadPayment();
rgDebits.Rebind();
}
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
SetConnection();
}
#region Events
protected
void
chkApply_CheckedChanged(
object
sender, EventArgs e)
{
bool
bHasRemainder =
true
;
CheckBox chk = (CheckBox)sender;
GridEditableItem edititem = (GridEditableItem)chk.Parent.Parent;
try
{
TextBox txtRemainingAmount = (TextBox)edititem[
"RemainingAmount"
].Controls[0];
decimal
decRemaining = LL_Utility.CurrencyToDecimal(lblPaymentRemaining.Text);
decimal
decAmountDue = LL_Utility.CurrencyToDecimal(txtRemainingAmount.Text);
//TextBox txtAmountApplied = (TextBox)edititem["AmountApplied"].FindControl("txtAmountApplied");
RadNumericTextBox txtAmountApplied = (RadNumericTextBox)edititem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
#region Region Checked
if
(chk.Checked)
{
if
(decRemaining > decAmountDue)
{
if
(txtAmountApplied.Text ==
""
|| txtAmountApplied.Value == 0)
{
txtAmountApplied.Text = decAmountDue.ToString();
}
decRemaining = decRemaining - decAmountDue;
lblPaymentRemaining.Text = decRemaining.ToString(
"C2"
);
if
(decRemaining > 0)
{
bHasRemainder =
true
;
}
else
{
bHasRemainder =
false
;
}
}
else
if
(decRemaining < decAmountDue)
{
txtAmountApplied.Text = decRemaining.ToString();
decRemaining = 0;
lblPaymentRemaining.Text = decRemaining.ToString(
"C2"
);
bHasRemainder =
false
;
}
}
#endregion Checked
#region Region Unchecked
else
{
decRemaining = LL_Utility.CurrencyToDecimal(lblPaymentRemaining.Text);
//get the amount to be applied from the txtAmount textbox
decimal
decAmountApplied = LL_Utility.CurrencyToDecimal(txtAmountApplied.Text);
decRemaining = decRemaining + decAmountApplied;
txtAmountApplied.Text =
""
;
// 0.ToString("C2");
lblPaymentRemaining.Text = decRemaining.ToString(
"C2"
);
bHasRemainder =
true
;
}
#endregion Region Unchecked
if
(!bHasRemainder)
{
foreach
(GridItem item
in
rgDebits.EditItems)
{
GridDataItem dataitem = (GridDataItem)item;
CheckBox chkApply = (CheckBox)dataitem[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied2 = (RadNumericTextBox)dataitem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
if
(!chkApply.Checked)
{
chkApply.Enabled =
false
;
txtAmountApplied2.Enabled =
false
;
}
}
}
else
{
foreach
(GridItem item
in
rgDebits.EditItems)
{
GridDataItem dataitem = (GridDataItem)item;
CheckBox chkApply = (CheckBox)dataitem[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied2 = (RadNumericTextBox)dataitem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
chkApply.Enabled =
true
;
txtAmountApplied2.Enabled =
true
;
}
}
//SetVisibility("Apply");
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
}
}
protected
void
cmdApply_Click(
object
sender, EventArgs e)
{
ApplyCredit();
rgDebits.Rebind();
}
private
void
ApplyCredit()
{
LaundryLogicDAL.ARApplicationsCollection oARAC =
new
LaundryLogicDAL.ARApplicationsCollection();
LaundryLogicDAL.ARCredits oARC =
new
LaundryLogicDAL.ARCredits();
LaundryLogicDAL.ARDebits oARD =
new
LaundryLogicDAL.ARDebits();
try
{
oARAC.es.Connection.Name =
"NAS"
;
oARAC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARC.es.Connection.Name =
"NAS"
;
oARC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARD.es.Connection.Name =
"NAS"
;
oARD.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
using
(EntitySpaces.Interfaces.esTransactionScope scope =
new
esTransactionScope())
{
foreach
(GridItem item
in
rgDebits.EditItems)
{
GridEditableItem edititem = (GridEditableItem)item;
RadNumericTextBox txtAmountApplied = (RadNumericTextBox)edititem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
CheckBox chkApply = (CheckBox)edititem[
"Apply"
].FindControl(
"chkApply"
);
decimal
decAppliedAmount = LL_Utility.CurrencyToDecimal(txtAmountApplied.Text);
//int iCreditID = (int)ViewState["PaymentID"];
int
iCreditID = (
int
)Session[
"PaymentID"
];
int
iDebitID = (
int
)edititem.OwnerTableView.DataKeyValues[edititem.ItemIndex][
"ID"
];
if
(chkApply.Checked)
{
//check to see if the application exists for this credit and debit,
//and update the amounts if it does, otherwise add it.
oARAC.Query.Where(oARAC.Query.CreditID == iCreditID, oARAC.Query.DebitID == iDebitID);
if
(oARAC.Query.Load())
{
oARAC[0].MarkAsDeleted();
oARAC.Save();
}
//Application Record
LaundryLogicDAL.ARApplications oARA = oARAC.AddNew();
oARA.CreditID = iCreditID;
oARA.DebitID = iDebitID;
oARA.Notes =
""
;
oARA.Amount = decAppliedAmount;
oARA.ApplicationDate = DateTime.Now;
oARA.IsVoid =
false
;
oARA.CreateDate = DateTime.Now;
oARA.CreatedBy = UserInfo.FullName;
oARAC.Save();
//Credit Record
//Set Remaining Amount = Remaining Amount - decAppliedAmount
if
(oARC.LoadByPrimaryKey(iCreditID))
{
oARC.RemainingAmount = oARC.RemainingAmount - decAppliedAmount;
oARC.Save();
}
//Debit Record
//Set Remaining Amount = Remaining Amount - decAppliedAmount
if
(oARD.LoadByPrimaryKey(iDebitID))
{
oARD.RemainingAmount = oARD.RemainingAmount - decAppliedAmount;
oARD.Save();
}
}
}
scope.Complete();
//PlaceHolder phApplication = (PlaceHolder)cmdApply.Parent.Parent;
//phApplication.Visible = false;
//UserControl ucPayment = (UserControl)phApplication.Parent;
//PlaceHolder phPayment = (PlaceHolder)ucPayment.FindControl("phApplyPayments");
//phPayment.Visible = true;
//RadGrid rg = (RadGrid)ucPayment.FindControl("rgDebits");
//rg.Rebind();
}
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
//SetVisibility("Apply");
}
finally
{
oARAC.Dispose();
oARAC =
null
;
oARC =
null
;
oARD =
null
;
}
}
protected
void
cmdCancel_Click(
object
sender, EventArgs e)
{
LoadPayment();
rgDebits.Rebind();
}
protected
void
rgDebits_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
DataTable oDTOpenDebits;
DataTable oDTClosedDebits;
DataTable oDT =
new
DataTable(); ;
int
iEntityID = 0;
string
sEntityType =
""
;
try
{
if
(Session[
"EntityID"
] !=
null
)
{
iEntityID = (
int
)Session[
"EntityID"
];
sEntityType = Session[
"EntityType"
].ToString();
}
if
(sEntityType !=
""
&& iEntityID > 0)
{
oDTOpenDebits = LoadOpenDebits(sEntityType, iEntityID);
oDTClosedDebits = LoadClosedDebits((
int
)Session[
"PaymentID"
]);
oDT.Merge(oDTOpenDebits);
oDT.Merge(oDTClosedDebits);
if
(oDT !=
null
)
{
rgDebits.DataSource = oDT;
}
else
{
rgDebits.DataSource =
new
object
[0];
}
}
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
}
}
protected
void
rgDebits_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item.ItemType == GridItemType.EditItem && e.Item.IsInEditMode)
//check whether the grid is in edit mode
{
GridEditableItem editItem = (GridEditableItem)e.Item;
CheckBox chkApply = (CheckBox)editItem[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied = (RadNumericTextBox)editItem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
//accessing the textBox
txtAmountApplied.AutoPostBack =
true
;
txtAmountApplied.TextChanged +=
new
EventHandler(txtAmountApplied_TextChanged);
}
}
protected
void
rgDebits_SortCommand(
object
sender, GridSortCommandEventArgs e)
{
//SetRowsToEditMode();
}
protected
void
txtAmountApplied_TextChanged(
object
sender, EventArgs e)
{
bool
bHasRemainder =
true
;
RadNumericTextBox txt = (RadNumericTextBox)sender;
GridEditableItem edititem = (GridEditableItem)txt.Parent.Parent;
try
{
TextBox txtRemainingAmount = (TextBox)edititem[
"RemainingAmount"
].Controls[0];
decimal
decPaymentAmount = LL_Utility.CurrencyToDecimal(lblPaymentAmount.Text);
decimal
decCurrentAppliedAmount = LL_Utility.CurrencyToDecimal(txt.Text);
decimal
decRemaining = LL_Utility.CurrencyToDecimal(lblPaymentRemaining.Text);
decRemaining = 0;
foreach
(GridEditableItem editItem
in
rgDebits.EditItems)
{
//GridEditableItem editItem = (GridEditableItem)item;
CheckBox chkApply = (CheckBox)editItem[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied = (RadNumericTextBox)editItem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
if
(chkApply.Checked)
{
decimal
decTemp = LL_Utility.CurrencyToDecimal(txtAmountApplied.Text);
decRemaining = decRemaining + decTemp;
}
}
if
(decRemaining > decPaymentAmount)
{
txt.Text =
""
;
CheckBox chkApply = (CheckBox)edititem[
"Apply"
].FindControl(
"chkApply"
);
chkApply.Checked =
false
;
//return;
}
if
(decRemaining == decPaymentAmount)
{
foreach
(GridItem item
in
rgDebits.EditItems)
{
GridDataItem dataitem = (GridDataItem)item;
CheckBox chkApply = (CheckBox)dataitem[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied2 = (RadNumericTextBox)dataitem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
if
(!chkApply.Checked)
{
chkApply.Enabled =
false
;
txtAmountApplied2.Enabled =
false
;
}
}
}
else
if
(decRemaining < decPaymentAmount)
{
foreach
(GridItem item
in
rgDebits.EditItems)
{
GridDataItem dataitem = (GridDataItem)item;
CheckBox chkApply = (CheckBox)dataitem[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied2 = (RadNumericTextBox)dataitem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
chkApply.Enabled =
true
;
txtAmountApplied2.Enabled =
true
;
}
}
//Recalculate
decRemaining = 0;
foreach
(GridItem item
in
rgDebits.EditItems)
{
GridEditableItem editItem2 = (GridEditableItem)item;
CheckBox chkApply2 = (CheckBox)editItem2[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied2 = (RadNumericTextBox)editItem2[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
if
(chkApply2.Checked)
{
decimal
decTemp = LL_Utility.CurrencyToDecimal(txtAmountApplied2.Text);
decRemaining = decRemaining + decTemp;
}
}
lblPaymentRemaining.Text = (decPaymentAmount - decRemaining).ToString(
"C2"
);
//SetVisibility("Apply");
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(ex.Message,
this
, ex);
}
}
#endregion Events
#region Methods
private
void
AutoApplyCredit(
int
iCreditID,
int
iEntityID,
string
sEntityType)
{
LaundryLogicDAL.ARDebitsCollection oARDC =
new
LaundryLogicDAL.ARDebitsCollection();
LaundryLogicDAL.ARDebitsQuery oARDQ =
new
LaundryLogicDAL.ARDebitsQuery(
"ard"
);
LaundryLogicDAL.ARAccountsQuery oARAQ =
new
LaundryLogicDAL.ARAccountsQuery(
"ara"
);
LaundryLogicDAL.ARApplicationsCollection oARAC =
new
LaundryLogicDAL.ARApplicationsCollection();
decimal
decRemainingAmount = 0;
try
{
oARDC.es.Connection.Name =
"NAS"
;
oARDC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARDQ.es2.Connection.Name =
"NAS"
;
oARDQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARAC.es.Connection.Name =
"NAS"
;
oARAC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARAQ.es2.Connection.Name =
"NAS"
;
oARAQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
//if standard account passed in
if
(sEntityType ==
"Standard"
)
//get open debits for entity type and ID in descending order
{
oARDQ.Where(
oARDQ.EntityID == iEntityID,
oARDQ.EntityType == sEntityType,
oARDQ.RemainingAmount > 0
);
}
//if master account, we need the sub accounts.
else
{
oARDQ.InnerJoin(oARAQ).On(
oARDQ.EntityType ==
"Standard"
&&
oARDQ.EntityID == oARAQ.Id);
oARDQ.Where(
oARAQ.MasterAccountID == iEntityID,
oARDQ.RemainingAmount > 0
);
}
oARDQ.OrderBy(oARDQ.DebitDate.Ascending);
if
(oARDC.Load(oARDQ))
{
//begin transaction
using
(EntitySpaces.Interfaces.esTransactionScope scope =
new
esTransactionScope())
{
//for each debit
foreach
(LaundryLogicDAL.ARDebits oARD
in
oARDC)
{
LaundryLogicDAL.ARCredits oARC =
new
LaundryLogicDAL.ARCredits();
try
{
oARC.es.Connection.Name =
"NAS"
;
oARC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
if
(oARC.LoadByPrimaryKey(iCreditID))
{
decimal
decDebitRemainingAmount = (
decimal
)oARD.RemainingAmount;
//if credit remaining amount > debit remaining amount
if
(oARC.RemainingAmount > oARD.RemainingAmount && oARD.RemainingAmount > 0)
{
//create application record with credit id and debit id and amount = debit remaining amount
LaundryLogicDAL.ARApplications oARA = oARAC.AddNew();
oARA.CreditID = iCreditID;
oARA.DebitID = oARD.Id;
oARA.Amount = decDebitRemainingAmount;
oARA.ApplicationDate = DateTime.Today;
oARA.CreateDate = DateTime.Now;
oARA.CreatedBy = UserInfo.FullName;
oARAC.Save();
//update debit set remaining amount = 0
oARD.RemainingAmount = 0;
oARDC.Save();
//update credit set remaining amount = credit original amount - debit original amount
oARC.RemainingAmount = oARC.RemainingAmount - decDebitRemainingAmount;
oARC.Save();
}
//if credit remaining amount < debit remaining amount
else
if
(oARC.RemainingAmount < oARD.RemainingAmount && oARD.RemainingAmount > 0)
{
//create application record with credit id and debit id and amount = credit remaining amount
LaundryLogicDAL.ARApplications oARA = oARAC.AddNew();
oARA.CreditID = iCreditID;
oARA.DebitID = oARD.Id;
oARA.Amount = oARC.RemainingAmount;
oARA.ApplicationDate = DateTime.Today;
oARA.CreateDate = DateTime.Now;
oARA.CreatedBy = UserInfo.FullName;
oARAC.Save();
//update debit set remaining amount = debit original amount - credit original amount
if
(oARC.RemainingAmount > 0)
{
oARD.RemainingAmount = decDebitRemainingAmount - oARC.RemainingAmount;
}
else
{
oARD.RemainingAmount = decDebitRemainingAmount - oARC.OriginalAmount;
}
//update credit set remaining amount = 0
oARC.RemainingAmount = 0;
oARC.Save();
oARDC.Save();
}
//if credit remaining amount = debit remaining amount
else
if
(oARC.RemainingAmount == oARD.RemainingAmount && oARD.RemainingAmount > 0)
{
//create application record with credit id and debit id and amount = credit remaining amount
LaundryLogicDAL.ARApplications oARA = oARAC.AddNew();
oARA.CreditID = iCreditID;
oARA.DebitID = oARD.Id;
oARA.Amount = oARC.RemainingAmount;
oARA.ApplicationDate = DateTime.Today;
oARA.CreateDate = DateTime.Now;
oARA.CreatedBy = UserInfo.FullName;
oARAC.Save();
//update debit set remaining amount = 0
oARD.RemainingAmount = 0;
oARDC.Save();
//update credit set remaining amount = 0
oARC.RemainingAmount = 0;
oARC.Save();
}
decRemainingAmount = (
decimal
)oARC.RemainingAmount;
}
}
finally
{
oARC =
null
;
}
if
(decRemainingAmount == 0)
{
break
;
}
}
//commit transaction
scope.Complete();
}
}
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
//SetVisibility("Apply");
}
finally
{
oARDC.Dispose();
oARDC =
null
;
}
}
public
void
LoadAccountInfo(
string
sEntityType,
int
iEntityID)
{
LaundryLogicDAL.ARAccounts oARA =
new
LaundryLogicDAL.ARAccounts();
LaundryLogicDAL.ARMaster oARM =
new
LaundryLogicDAL.ARMaster();
try
{
oARA.es.Connection.Name =
"NAS"
;
oARA.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARM.es.Connection.Name =
"NAS"
;
oARM.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
if
(sEntityType ==
"Master"
)
{
if
(oARM.LoadByPrimaryKey(iEntityID))
{
lblAccountName.Text = oARM.AccountName;
lblAccountNumber.Text =
"(N/A)"
;
lblIsMasterAccount.Text =
"Y"
;
}
}
else
if
(sEntityType ==
"Standard"
)
{
if
(oARA.LoadByPrimaryKey(iEntityID))
{
lblAccountName.Text = oARA.AccountName;
lblAccountNumber.Text = oARA.Account;
lblIsMasterAccount.Text =
"N"
;
}
}
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
}
finally
{
oARA =
null
;
oARM =
null
;
}
}
private
DataTable LoadClosedDebits(
int
iPaymentID)
{
LaundryLogicDAL.ARDebitsQuery oARDQ =
new
LaundryLogicDAL.ARDebitsQuery(
"ard"
);
LaundryLogicDAL.ARAccountsQuery oARAQ =
new
LaundryLogicDAL.ARAccountsQuery(
"ara"
);
LaundryLogicDAL.ARApplicationsQuery oARAQ2 =
new
LaundryLogicDAL.ARApplicationsQuery(
"ara2"
);
try
{
oARDQ.es2.Connection.Name =
"NAS"
;
oARDQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARAQ.es2.Connection.Name =
"NAS"
;
oARAQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARAQ2.es2.Connection.Name =
"NAS"
;
oARAQ2.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARDQ.Select(
oARDQ.Id,
oARDQ.DebitDate,
oARDQ.DebitIdentifier,
oARAQ.Account,
oARAQ.AccountName,
oARDQ.OriginalAmount,
oARDQ.RemainingAmount);
oARDQ.InnerJoin(oARAQ).On(
oARDQ.EntityID == oARAQ.Id);
oARDQ.InnerJoin(oARAQ2).On(
oARDQ.Id == oARAQ2.DebitID);
oARDQ.Where(
oARAQ2.CreditID == iPaymentID,
oARDQ.RemainingAmount == 0
);
oARDQ.OrderBy(oARDQ.DebitDate.Ascending);
return
oARDQ.LoadDataTable();
}
catch
(Exception ex)
{
System.Text.StringBuilder oSB =
new
System.Text.StringBuilder();
oSB.AppendLine(
"Missing variable:"
);
oSB.AppendLine(
"iPaymentID: "
+ iPaymentID);
DotNetNuke.Services.Exceptions.Exceptions.LogException(ex);
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(oSB.ToString(),
this
, ex);
return
null
;
}
finally
{
oARDQ =
null
;
oARAQ =
null
;
}
}
private
DataTable LoadOpenDebits(
string
sEntityType,
int
iEntityID)
{
LaundryLogicDAL.ARDebitsQuery oARDQ =
new
LaundryLogicDAL.ARDebitsQuery(
"ard"
);
LaundryLogicDAL.ARAccountsQuery oARAQ =
new
LaundryLogicDAL.ARAccountsQuery(
"ara"
);
try
{
oARDQ.es2.Connection.Name =
"NAS"
;
oARDQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARAQ.es2.Connection.Name =
"NAS"
;
oARAQ.es2.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARDQ.Select(
oARDQ.Id,
oARDQ.DebitDate,
oARDQ.DebitIdentifier,
oARAQ.Account,
oARAQ.AccountName,
oARDQ.OriginalAmount,
oARDQ.RemainingAmount);
if
(sEntityType ==
"Standard"
)
{
oARDQ.InnerJoin(oARAQ).On(oARDQ.EntityID == oARAQ.Id);
oARDQ.Where(
oARDQ.EntityID == iEntityID,
oARDQ.EntityType == sEntityType,
oARDQ.RemainingAmount > 0,
oARDQ.OriginalAmount > 0
);
}
else
{
oARDQ.InnerJoin(oARAQ).On(
oARDQ.EntityID == oARAQ.Id);
oARDQ.Where(
oARAQ.MasterAccountID == iEntityID,
oARDQ.RemainingAmount > 0,
oARDQ.OriginalAmount > 0
);
}
oARDQ.OrderBy(oARDQ.DebitDate.Ascending);
return
oARDQ.LoadDataTable();
}
catch
(Exception ex)
{
System.Text.StringBuilder oSB =
new
System.Text.StringBuilder();
oSB.AppendLine(
"Missing variable:"
);
oSB.AppendLine(
"iEntityID: "
+ iEntityID);
oSB.AppendLine(
"sEntityType: "
+ sEntityType);
DotNetNuke.Services.Exceptions.Exceptions.LogException(ex);
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(oSB.ToString(),
this
, ex);
return
null
;
}
finally
{
oARDQ =
null
;
oARAQ =
null
;
}
}
private
void
LoadPayment()
{
LaundryLogicDAL.ARCredits oARC =
new
LaundryLogicDAL.ARCredits();
LaundryLogicDAL.ARActivityType oART =
new
LaundryLogicDAL.ARActivityType();
try
{
oARC.es.Connection.Name =
"NAS"
;
oARC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oART.es.Connection.Name =
"NAS"
;
oART.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
//if (oARC.LoadByPrimaryKey((int)ViewState["PaymentID"]))
if
(oARC.LoadByPrimaryKey((
int
)Session[
"PaymentID"
]))
{
if
(oART.LoadByPrimaryKey((
int
)oARC.ActivityTypeID))
{
this
.lblPaymentActivityType.Text = oART.ActivityType;
}
this
.lblCreditIdentifier.Text = oARC.CreditIdentifier;
DateTime dteCreditDate = (DateTime)oARC.CreditDate;
this
.lblCreditDate.Text = dteCreditDate.ToShortDateString();
this
.lblPaymentAmount.Text =
string
.Format(
"{0:C2}"
, oARC.OriginalAmount);
this
.lblPaymentRemaining.Text =
string
.Format(
"{0:C2}"
, oARC.RemainingAmount);
if
(oARC.RemainingAmount > 0)
{
//btnAutoApply.Enabled = true;
}
else
{
//btnAutoApply.Enabled = false;
}
}
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
}
finally
{
oARC =
null
;
oART =
null
;
}
}
private
void
RollbackCredit(
int
iID)
{
LaundryLogicDAL.ARApplicationsCollection oARAC =
new
LaundryLogicDAL.ARApplicationsCollection();
LaundryLogicDAL.ARDebits oARD =
new
LaundryLogicDAL.ARDebits();
LaundryLogicDAL.ARCredits oARC =
new
LaundryLogicDAL.ARCredits();
try
{
string
sCreditIdentifier =
""
;
oARAC.es.Connection.Name =
"NAS"
;
oARAC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARD.es.Connection.Name =
"NAS"
;
oARD.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARC.es.Connection.Name =
"NAS"
;
oARC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
//Get all applications with the Credit ID = iID
oARAC.Query.Where(
oARAC.Query.CreditID == iID
);
if
(oARAC.Query.Load())
{
//begin transaction
using
(esTransactionScope scope =
new
esTransactionScope())
{
//for each application record
for
(
int
i = 0; i < oARAC.Count; i++)
{
//get invoice record
if
(oARD.LoadByPrimaryKey((
int
)oARAC[i].DebitID))
{
//update invoice record set remaining amount = remaining amount + application amount
oARD.RemainingAmount = oARD.RemainingAmount + oARAC[i].Amount;
oARD.Save();
}
//get credit record
if
(oARC.LoadByPrimaryKey(iID))
{
//update credit record set remaining amount = remaining amount + application amount
oARC.RemainingAmount = oARC.RemainingAmount + oARAC[i].Amount;
sCreditIdentifier = oARC.CreditIdentifier;
oARC.Save();
}
}
oARAC.MarkAllAsDeleted();
oARAC.Save();
scope.Complete();
}
}
//else
//{
// if (oARC.LoadByPrimaryKey(iID))
// {
// //update credit record set remaining amount = remaining amount + application amount
// oARC.RemainingAmount = oARC.RemainingAmount + oARAC[i].Amount;
// sCreditIdentifier = oARC.CreditIdentifier;
// //oARC.MarkAsDeleted();
// oARC.Save();
// }
//}
//commit transaction
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
}
finally
{
oARAC.Dispose();
oARAC =
null
;
oARC =
null
;
oARD =
null
;
}
}
private
void
SetConnection()
{
//If there is no default connection named DNNFulcrum
if
(esConfigSettings.ConnectionInfo.Default !=
"DNNFulcrum"
)
{
//Get the connectionInfo section from the web.config
esConfigSettings ConnectionInfoSettings = esConfigSettings.ConnectionInfo;
//loop through each connection...
foreach
(esConnectionElement connection
in
ConnectionInfoSettings.Connections)
{
//if there is a DNNFulcrum in es connections set it default
if
(connection.Name ==
"DNNFulcrum"
)
{
esConfigSettings.ConnectionInfo.Default = connection.Name;
return
;
}
}
}
// Register the Loader
esProviderFactory.Factory =
new
EntitySpaces.LoaderMT.esDataProviderFactory();
}
private
void
SetRowsToEditMode()
{
//try
//{
// for (int i = 0; i < rgDebits.PageSize; i++)
// {
// rgDebits.EditIndexes.Add(i);
// }
//}
//catch(Exception ex)
//{
// DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(this, ex);
//}
}
private
void
SetVisibility(
string
sFunction)
{
//System.Web.UI.UserControl ucPayments = (System.Web.UI.UserControl)this.Parent.Parent;
//PlaceHolder phAccounts = (PlaceHolder)ucPayments.FindControl("phAccounts");
//PlaceHolder phCredits = (PlaceHolder)ucPayments.FindControl("phCredits");
//PlaceHolder phApplyPayments = (PlaceHolder)ucPayments.FindControl("phApplyPayments");
//System.Web.UI.UserControl ucCredits = (System.Web.UI.UserControl)phCredits.FindControl("Credits1");
//RadGrid rgCredits = (RadGrid)ucCredits.FindControl("rgCredits");
//rgCredits.Rebind();
//switch (sFunction)
//{
// case "Customer":
// {
// phAccounts.Visible = true;
// phCredits.Visible = false;
// phApplyPayments.Visible = false;
// break;
// }
// case "Payment":
// {
// phAccounts.Visible = false;
// phCredits.Visible = true;
// phApplyPayments.Visible = false;
// break;
// }
// case "Apply":
// {
// phAccounts.Visible = false;
// phCredits.Visible = false;
// phApplyPayments.Visible = true;
// break;
// }
//}
}
#endregion Methods
protected
void
btnClearAll_Click(
object
sender, EventArgs e)
{
ClearAll();
//SetVisibility("Apply");
}
private
void
ClearAll()
{
foreach
(GridItem item
in
rgDebits.EditItems)
{
GridDataItem dataitem = (GridDataItem)item;
CheckBox chkApply = (CheckBox)dataitem[
"Apply"
].FindControl(
"chkApply"
);
RadNumericTextBox txtAmountApplied = (RadNumericTextBox)dataitem[
"AmountApplied"
].FindControl(
"txtAmountApplied"
);
chkApply.Checked =
false
;
txtAmountApplied.Text =
""
;
}
//lblPaymentRemaining.Text = lblPaymentAmount.Text;
}
protected
void
btnAutoApply_Click(
object
sender, EventArgs e)
{
if
(Session[
"EntityType"
] !=
null
&&
Session[
"EntityID"
] !=
null
&&
Session[
"PaymentID"
] !=
null
)
{
string
sEntityType = Session[
"EntityType"
].ToString();
int
iEntityID = (
int
)Session[
"EntityID"
];
int
iCreditID = (
int
)Session[
"PaymentID"
];
AutoApplyCredit(iCreditID, iEntityID, sEntityType);
LoadPayment();
rgDebits.Rebind();
ClearAll();
//SetVisibility("Apply");
}
}
protected
void
btnRollbackAll_Click(
object
sender, EventArgs e)
{
if
(Session[
"PaymentID"
] !=
null
)
{
int
iPaymentID = (
int
)Session[
"PaymentID"
];
RollbackCredit(iPaymentID);
rgDebits.Rebind();
ClearAll();
}
}
protected
void
rgDebits_PreRender(
object
sender, EventArgs e)
{
try
{
for
(
int
i = 0; i < rgDebits.PageSize; i++)
{
rgDebits.EditIndexes.Add(i);
}
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
}
}
protected
void
btnRollbackSelected_Click(
object
sender, EventArgs e)
{
foreach
(GridEditableItem oEditItem
in
rgDebits.MasterTableView.Items)
{
CheckBox chkApply = (CheckBox)oEditItem.FindControl(
"chkApply"
);
if
(chkApply.Checked)
{
int
iApplicationID = (
int
)oEditItem.OwnerTableView.DataKeyValues[oEditItem.ItemIndex][
"ID"
];
RollbackApplication((
int
)Session[
"PaymentID"
], iApplicationID);
}
}
LoadPayment();
rgDebits.Rebind();
UpdatePanel oUP = (UpdatePanel)
this
.Parent.Parent;
oUP.Update();
}
private
void
RollbackApplication(
int
iCreditID,
int
iDebitID)
{
//need to get the creditID and debit ID from the application record, then
//add the applied amount to the credit remaining amount
//add the applied amount to the debit remaining amount
//delete the application
LaundryLogicDAL.ARApplications oARA =
new
LaundryLogicDAL.ARApplications();
LaundryLogicDAL.ARDebits oARD =
new
LaundryLogicDAL.ARDebits();
LaundryLogicDAL.ARCredits oARC =
new
LaundryLogicDAL.ARCredits();
try
{
string
sCreditIdentifier =
""
;
oARA.es.Connection.Name =
"NAS"
;
oARA.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARD.es.Connection.Name =
"NAS"
;
oARD.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
oARC.es.Connection.Name =
"NAS"
;
oARC.es.Connection.SqlAccessType = esSqlAccessType.DynamicSQL;
//Get all applications with the Credit ID = iID
oARA.Query.Where(oARA.Query.CreditID == iCreditID, oARA.Query.DebitID == iDebitID);
if
(oARA.Query.Load())
{
//begin transaction
using
(esTransactionScope scope =
new
esTransactionScope())
{
//get invoice record
if
(oARD.LoadByPrimaryKey((
int
)oARA.DebitID))
{
//update invoice record set remaining amount = remaining amount + application amount
oARD.RemainingAmount = oARD.RemainingAmount + oARA.Amount;
oARD.Save();
}
//get credit record
if
(oARC.LoadByPrimaryKey((
int
)oARA.CreditID))
{
//update credit record set remaining amount = remaining amount + application amount
oARC.RemainingAmount = oARC.RemainingAmount + oARA.Amount;
sCreditIdentifier = oARC.CreditIdentifier;
oARC.Save();
}
oARA.MarkAsDeleted();
oARA.Save();
scope.Complete();
}
}
}
catch
(Exception ex)
{
DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(
this
, ex);
}
finally
{
oARA =
null
;
oARC =
null
;
oARD =
null
;
}
}
}
}