or
<
asp:LinkButton
ID
=
"btnAddInvoice"
runat
=
"server"
CssClass
=
"button small radius"
Text
=
"Add Checked to New Invoice"
OnClick
=
"btnAddInvoice_Click"
></
asp:LinkButton
>
<
asp:Literal
runat
=
"server"
ID
=
"litAddInvoice"
></
asp:Literal
>
<
div
class
=
"reset"
>
<
telerik:RadGrid
ID
=
"rgTracker"
runat
=
"server"
AllowSorting
=
"true"
AllowPaging
=
"true"
PageSize
=
"100"
OnItemCreated
=
"rgTracker_ItemCreated"
OnNeedDataSource
=
"rgTracker_NeedDataSource"
AllowFilteringByColumn
=
"True"
OnItemCommand
=
"rgTracker_ItemCommand"
OnItemDataBound
=
"rgTracker_ItemDataBound"
Skin
=
"Windows7"
OnPreRender
=
"rgTracker_PreRender"
>
<
ExportSettings
HideStructureColumns
=
"true"
>
</
ExportSettings
>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
MasterTableView
AutoGenerateColumns
=
"false"
EnableHierarchyExpandAll
=
"true"
DataKeyNames
=
"rdID, jobID"
>
<
PagerStyle
PageSizes
=
"10,50,100,200,500"
Mode
=
"NextPrevAndNumeric"
PageSizeLabelText
=
"Show results: "
Position
=
"TopAndBottom"
AlwaysVisible
=
"true"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"rdID"
Visible
=
"false"
ReadOnly
=
"true"
UniqueName
=
"rdID"
ForceExtractValue
=
"Always"
ConvertEmptyStringToNull
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"jobID"
Visible
=
"false"
ReadOnly
=
"true"
UniqueName
=
"jobID"
ForceExtractValue
=
"Always"
ConvertEmptyStringToNull
=
"true"
></
telerik:GridBoundColumn
>
<
telerik:GridHyperLinkColumn
HeaderText
=
"Customer Name"
DataTextField
=
"customerName"
UniqueName
=
"customerName"
DataNavigateUrlFields
=
"jobID"
DataNavigateUrlFormatString
=
"/pensionlitedetail/{0}"
>
<
HeaderStyle
Width
=
"150px"
/>
</
telerik:GridHyperLinkColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Postcode"
DataField
=
"customerPostcode"
UniqueName
=
"customerPostcode"
FilterControlWidth
=
"30px"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"50px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Phone"
DataField
=
"customerPhone"
UniqueName
=
"customerPhone"
FilterControlWidth
=
"70px"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"90px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Pension Value"
DataField
=
"customerPensionValue"
UniqueName
=
"customerPensionValue"
DataFormatString
=
"{0:C}"
FilterControlWidth
=
"40px"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"75px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridDateTimeColumn
HeaderText
=
"Sale Date"
DataField
=
"saleDate"
UniqueName
=
"saleDate"
DataFormatString
=
"{0:g}"
PickerType
=
"DatePicker"
EnableRangeFiltering
=
"true"
FilterControlWidth
=
"100px"
EnableTimeIndependentFiltering
=
"true"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"120px"
/>
</
telerik:GridDateTimeColumn
>
<
telerik:GridDateTimeColumn
HeaderText
=
"Appt Date"
DataField
=
"apptDate"
UniqueName
=
"apptDate"
DataFormatString
=
"{0:g}"
PickerType
=
"DatePicker"
EnableRangeFiltering
=
"true"
FilterControlWidth
=
"100px"
EnableTimeIndependentFiltering
=
"true"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"120px"
/></
telerik:GridDateTimeColumn
>
<
telerik:GridDateTimeColumn
HeaderText
=
"Updated"
DataField
=
"updatedDate"
UniqueName
=
"updatedDate"
DataFormatString
=
"{0:g}"
PickerType
=
"DatePicker"
EnableRangeFiltering
=
"true"
FilterControlWidth
=
"100px"
EnableTimeIndependentFiltering
=
"true"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"120px"
/></
telerik:GridDateTimeColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Current Status"
DataField
=
"currentStatus"
UniqueName
=
"currentStatus"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"100px"
/>
<
FilterTemplate
>
<
telerik:RadComboBox
ID
=
"RadComboBoxStatus"
AppendDataBoundItems
=
"true"
SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("currentStatus").CurrentFilterValue %>'
runat="server" OnClientSelectedIndexChanged="StatusIndexChanged" Skin="Windows7" Width="200px">
<
Items
>
<
telerik:RadComboBoxItem
Text
=
"All"
/>
<
telerik:RadComboBoxItem
Text
=
"Lead Pending"
Value
=
"Lead Pending"
/>
<
telerik:RadComboBoxItem
Text
=
"Lead Accepted"
Value
=
"Lead Accepted"
/>
<
telerik:RadComboBoxItem
Text
=
"Lead Rejected"
Value
=
"Lead Rejected"
/>
</
Items
>
</
telerik:RadComboBox
>
<
telerik:RadScriptBlock
ID
=
"RadScriptBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function StatusIndexChanged(sender, args) {
var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
tableView.filter("currentStatus", args.get_item().get_value(), "EqualTo");
}
</
script
>
</
telerik:RadScriptBlock
>
</
FilterTemplate
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Invoiced"
DataField
=
"invoiced"
UniqueName
=
"invoiced"
Display
=
"false"
ForceExtractValue
=
"Always"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"50px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"InvoicedCheckboxColumn"
AllowFiltering
=
"false"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"chkInvoiced"
runat
=
"server"
/>
</
ItemTemplate
>
<
HeaderTemplate
>
Invoiced<
br
/><
asp:CheckBox
ID
=
"chkInoicedHeader"
runat
=
"server"
OnCheckedChanged
=
"chkInoicedHeader_CheckedChanged"
AutoPostBack
=
"true"
/>
</
HeaderTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
HeaderText
=
"Credit"
DataField
=
"credited"
UniqueName
=
"credited"
Display
=
"false"
ForceExtractValue
=
"Always"
ReadOnly
=
"true"
>
<
HeaderStyle
Width
=
"50px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"CreditedCheckboxColumn"
AllowFiltering
=
"false"
>
<
HeaderStyle
Width
=
"20px"
/>
<
ItemTemplate
>
<
asp:CheckBox
ID
=
"chkCredited"
runat
=
"server"
/>
</
ItemTemplate
>
<
HeaderTemplate
>
Credited<
br
/><
asp:CheckBox
ID
=
"chkCreditedHeader"
runat
=
"server"
OnCheckedChanged
=
"chkCreditedHeader_CheckedChanged"
AutoPostBack
=
"true"
/>
</
HeaderTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
protected
void
rgTracker_NeedDataSource(
object
sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
rgTracker.DataSource = GetData();
}
protected
void
rgTracker_ItemCommand(
object
sender, Telerik.Web.UI.GridCommandEventArgs e)
{
}
protected
void
rgTracker_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem dataItem = (GridDataItem)e.Item;
string
cStatus = dataItem[
"currentStatus"
].Text;
if
(cStatus ==
"Lead Rejected"
)
{
dataItem.BackColor = Color.LightCoral;
}
if
(cStatus ==
"Lead Accepted"
)
{
dataItem.BackColor = Color.LightGreen;
}
CheckBox chkInvoiced = (CheckBox)e.Item.FindControl(
"chkInvoiced"
);
string
sInv = dataItem[
"invoiced"
].Text;
bool
bInv =
false
;
Boolean.TryParse(sInv,
out
bInv);
if
(bInv)
{
chkInvoiced.Checked =
true
;
chkInvoiced.Enabled =
false
;
}
CheckBox chkCredited = (CheckBox)e.Item.FindControl(
"chkCredited"
);
string
sCred = dataItem[
"credited"
].Text;
bool
bCred =
false
;
Boolean.TryParse(sCred,
out
bCred);
if
(bCred)
{
chkCredited.Checked =
true
;
chkCredited.Enabled =
false
;
}
}
}
protected
void
rgTracker_PreRender(
object
sender, EventArgs e)
{
}
protected
void
rgTracker_ItemCreated(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
GridFilteringItem filteringItem = e.Item
as
GridFilteringItem;
if
(filteringItem !=
null
)
{
LiteralControl literalTo1 = filteringItem[
"saleDate"
].Controls[3]
as
LiteralControl;
literalTo1.Text =
"<br />To:"
;
LiteralControl literalTo2 = filteringItem[
"apptDate"
].Controls[3]
as
LiteralControl;
literalTo2.Text =
"<br />To:"
;
LiteralControl literalTo3 = filteringItem[
"updatedDate"
].Controls[3]
as
LiteralControl;
literalTo3.Text =
"<br />To:"
;
}
}
protected
void
chkInoicedHeader_CheckedChanged(
object
sender, EventArgs e)
{
CheckBox headerCheckBox = (sender
as
CheckBox);
foreach
(GridDataItem dataItem
in
rgTracker.MasterTableView.Items)
{
if
((dataItem.FindControl(
"chkInvoiced"
)
as
CheckBox).Enabled)
{
(dataItem.FindControl(
"chkInvoiced"
)
as
CheckBox).Checked = headerCheckBox.Checked;
dataItem.Selected = headerCheckBox.Checked;
}
}
}
protected
void
chkCreditedHeader_CheckedChanged(
object
sender, EventArgs e)
{
CheckBox headerCheckBox = (sender
as
CheckBox);
foreach
(GridDataItem dataItem
in
rgTracker.MasterTableView.Items)
{
if
((dataItem.FindControl(
"chkCredited"
)
as
CheckBox).Enabled)
{
(dataItem.FindControl(
"chkCredited"
)
as
CheckBox).Checked = headerCheckBox.Checked;
dataItem.Selected = headerCheckBox.Checked;
}
}
}
protected
void
btnAddInvoice_Click(
object
sender, EventArgs e)
{
//TODO: Wire in credits and check for duplicate sales
Invoice inv =
new
Invoice();
inv.ClientID = 11;
inv.InvoiceDate = DateTime.Now;
dbContext.Invoices.Add(inv);
dbContext.SaveChanges();
foreach
(GridDataItem item
in
rgTracker.MasterTableView.Items)
{
CheckBox chkInvoiced = (CheckBox)item.FindControl(
"chkInvoiced"
);
if
(chkInvoiced.Checked && chkInvoiced.Enabled)
{
//ReportDetails rd = (ReportDetails)item.DataItem;
//litAddInvoice.Text += string.Format("<div data-alert class='alert-box info radius'>{0} {1} - {2}</div>", rd.customerName, rd.customerPhone, rd.jobId);
string
strJID = item.GetDataKeyValue(
"jobID"
).ToString();
litAddInvoice.Text +=
string
.Format(
"<div data-alert class='alert-box info radius'>Job ID: {0}</div>"
, strJID);
int
intJID = 0;
Int32.TryParse(strJID,
out
intJID);
Job j =
new
Job();
j = dbContext.Jobs.Where(x => x.ID == intJID).FirstOrDefault();
if
(j.ID > 0)
{
InvoiceDetail id =
new
InvoiceDetail();
id.JobID = j.ID;
id.Credit =
false
;
id.JobSchemaID = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.ID).FirstOrDefault();
id.StatusWhenInvoiced = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.JobStage1.JobStage1).FirstOrDefault();
id.InvoiceID = inv.ID;
dbContext.InvoiceDetails.Add(id);
dbContext.SaveChanges();
}
}
CheckBox chkCredited = (CheckBox)item.FindControl(
"chkCredited"
);
if
(chkCredited.Checked && chkCredited.Enabled)
{
//ReportDetails rd = (ReportDetails)item.DataItem;
//litAddInvoice.Text += string.Format("<div data-alert class='alert-box info radius'>{0} {1} - {2}</div>", rd.customerName, rd.customerPhone, rd.jobId);
string
strJID = item.GetDataKeyValue(
"jobID"
).ToString();
litAddInvoice.Text +=
string
.Format(
"<div data-alert class='alert-box warning radius'>Job ID: {0}</div>"
, strJID);
int
intJID = 0;
Int32.TryParse(strJID,
out
intJID);
Job j =
new
Job();
j = dbContext.Jobs.Where(x => x.ID == intJID).FirstOrDefault();
if
(j.ID > 0)
{
InvoiceDetail id =
new
InvoiceDetail();
id.JobID = j.ID;
id.Credit =
true
;
id.JobSchemaID = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.ID).FirstOrDefault();
id.StatusWhenInvoiced = j.JobSchemata.OrderByDescending(x => x.ID).Select(x => x.JobStage1.JobStage1).FirstOrDefault();
id.InvoiceID = inv.ID;
dbContext.InvoiceDetails.Add(id);
dbContext.SaveChanges();
}
}
rgTracker.Rebind();
}
litAddInvoice.Text +=
"<div data-alert class='alert-box success radius'>Invoice Generated</div>"
;
}
GridColumnCollection cols = grid.MasterTableView.Columns;
GridColumn c = cols.FindByUniqueName(columnName);
if
(c !=
null
){
int
start = c.OrderIndex;
for
(
int
i= start; i < cols.Count; i++)
{
c = cols[i];
if
(i < cols.Count - 1)
c.OrderIndex = i+1;
else
c.OrderIndex = start;
}
}
var newDataSource=new kendo.data.DataSource({
transport : {
read : {
url : context+"/master/common/listLocationByCountry/"+data.country.id+"?marketDifferentialId="+data.id+"&locationId="+data.location.id
}
}
});
newDataSource.read();
var locationName = data.location.name;
var locationValue=data.location.id;
var locationDropDown = $("#locationId").data("kendoDropDownList");
locationDropDown.setOptions({ dataTextField: "name", dataValueField: "id" });
locationDropDown.setDataSource(newDataSource);
$("#locationId").val(locationValue).data("kendoDropDownList").text(locationName);
function
loadTreeView(sender, args) {
var
dropdowntree1 = $find(
"<%=ddtList.ClientID%>"
);
var
tree = dropdowntree1.get_embeddedTree();
$(
".rddtFilterInput"
).keyup(
function
() {
if
($(
".rddtFilterInput"
).val() ==
''
)
treeCollapseAllNodes(tree);
}