Added HttpException class for missing HttpException for net8 Wrapped HttpContext.Session, GetJsonResult, IsAjaxRequest and GetUserIdentityName in controllers for net8 Added AuthenticationService to test Fab2ApprovalMKLink code for net8 Compile conditionally flags to debug in dotnet core
2575 lines
108 KiB
Plaintext
2575 lines
108 KiB
Plaintext
@model Fab2ApprovalSystem.Models.LTWorkRequest
|
|
@{
|
|
ViewBag.Title = "Work Request";
|
|
}
|
|
@{
|
|
Layout = "_LotTravelerLayout.cshtml";
|
|
}
|
|
|
|
<link rel="stylesheet" href="/Content/kendo/kendo.blueopal.min.css" />
|
|
|
|
<style>
|
|
table {
|
|
border-spacing: 2px;
|
|
padding: 3px;
|
|
border-color: white;
|
|
}
|
|
|
|
td {
|
|
border-color: white;
|
|
padding: 4px;
|
|
}
|
|
.k-grid tbody tr td {
|
|
vertical-align: top;
|
|
}
|
|
</style>
|
|
<body onload="StartTimers();" onmousemove="ResetTimers();" onkeydown="ResetTimers();">
|
|
|
|
@using (Html.BeginForm())
|
|
{
|
|
<input type="hidden" id="LTWorkRequestID" value="@Model.ID" />
|
|
<input type="hidden" id="OriginalWIPPartNumber" value="@Model.WIPPartNumber" />
|
|
<input type="hidden" id="DefaultEPISiliconPartNumber" value="@Model.DefaultEPISiliconPartNumber" />
|
|
<input type="hidden" id="currentStep" value="@Model.CurrentStep" />
|
|
@Html.AntiForgeryToken()
|
|
<div data-spy="affix">
|
|
@if (@Model.CurrentStep == 0)
|
|
{
|
|
<div data-spy="affix">
|
|
<input type="submit" value="Save" class="btn btn-primary btn-xs" id="SaveDocument"/>
|
|
<input type="button" value="Submit" class="btn btn-primary btn-xs" id="SubmitDocument" />
|
|
</div>
|
|
}
|
|
else if (@Model.CurrentStep == 3)
|
|
{
|
|
|
|
if (ViewBag.IsApprover == "true")
|
|
{
|
|
<div data-spy="affix" data-offset-top="0">
|
|
<input type="button" value="Save" class="btn btn-primary btn-xs" id="SaveNewRevision" />
|
|
<input type="button" value="Approve" class="btn btn-success btn-xs" id="ApproveDocument" />
|
|
<input type="button" value="Reject" class="btn btn-warning btn-xs" id="RejectDocument" />
|
|
</div>
|
|
}
|
|
else if (@Model.IsCurrentRevision)
|
|
{
|
|
<div data-spy="affix" data-offset-top="0">
|
|
<input type="button" value="Save" class="btn btn-primary btn-xs" id="SaveNewRevision" />
|
|
</div>
|
|
|
|
}
|
|
}
|
|
</div>
|
|
<div class="panel panel-default center-block" style="font-size: 10px">
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
<font style="color:crimson">
|
|
<h4>
|
|
Fab2 Special Work Request <font style="color: green; font-weight:bold; font-style:italic">Rev @Model.Revision</font>
|
|
</h4>
|
|
</font>
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color:crimson">
|
|
Section1: Work Request <font style="color: green; font-weight:bold; font-style:italic; font-size:small">(This Section must be completed before submitting for approval)</font>
|
|
</font>
|
|
</h5>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-2">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">SWR #:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@Html.TextBoxFor(model => model.SWRNumber, new { id = "txtSWRNumber", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Title:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@Html.TextBoxFor(model => model.Title, new { id = "txtTitle", @class = "k-textbox", style = "width:100%" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Submit Date:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@Html.TextBoxFor(model => model.SubmitedDate, new { id = "txtSubmitDate", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!--NEW ROW=========================================================================================================================================================-->
|
|
<div class="col-sm-2">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Originator:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@Html.TextBoxFor(model => model.OriginatorName, new { id = "txtOriginatorName", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
@if (GlobalVars.IsAdminValueNotNull(Session))
|
|
{
|
|
<a href="javascript:undefined" id="lnkReassignOriginator" class="linkbutton edit" title="Re-assign Originator"></a>
|
|
}
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Affected Departments:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@(Html.Kendo().MultiSelectFor(m => m.DepartmentIDs)
|
|
.Name("DepartmentIDs")
|
|
.BindTo(new SelectList(ViewBag.Departments, "DepartmentID", "DepartmentName"))
|
|
.Value(ViewBag.Nothing)
|
|
)
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Affected Modules:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@(Html.Kendo().MultiSelect()
|
|
.Name("ModuleIDs")
|
|
.BindTo(new SelectList(ViewBag.AffectedModules, "ModuleID", "ModuleName"))
|
|
.Value(ViewBag.Nothing)
|
|
)
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<!--NEW ROW=========================================================================================================================================================-->
|
|
<div class="col-sm-2">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Status:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@Html.TextBoxFor(model => model.ApprovalStatus, new { id = "txtStatus", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Lot Type:</label>
|
|
</div>
|
|
<div class="col-sm-3">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("LotType")
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
.BindTo(new List<SelectListItem>()
|
|
{
|
|
new SelectListItem()
|
|
{
|
|
Text = "Select",
|
|
Value = "Select"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "E",
|
|
Value = "E"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "P" ,
|
|
Value = "P"
|
|
}
|
|
}
|
|
)
|
|
.Value(Model.LotType.ToString())
|
|
|
|
)
|
|
|
|
</div>
|
|
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">ITAR:</label>
|
|
</div>
|
|
<div class="col-sm-3">
|
|
@Html.CheckBoxFor(model => model.IsITAR, new { @disabled = "disabled" })
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">PCRB#:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@Html.TextBoxFor(model => model.PCRBNumber, new { id = "txtPCRBNumber", @class = "k-textbox" })
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!--NEW ROW=========================================================================================================================================================-->
|
|
<div class="col-sm-2">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Eng Lot Start Req:</label>
|
|
</div>
|
|
<div class="col-sm-9">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("EngLotStartRequired")
|
|
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
.BindTo(new List<SelectListItem>()
|
|
{
|
|
new SelectListItem()
|
|
{
|
|
Text = "Select",
|
|
Value = "-1"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "Yes",
|
|
Value = "1"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "No",
|
|
Value = "0"
|
|
}
|
|
}
|
|
)
|
|
.Value(Model.EngLotStartRequired.ToString())
|
|
)
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Lot Type Conversion:</label>
|
|
</div>
|
|
<div class="col-sm-3">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("LotTypeConversion")
|
|
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
.BindTo(new List<SelectListItem>()
|
|
{
|
|
new SelectListItem()
|
|
{
|
|
Text = "Select",
|
|
Value = "-1"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "Yes",
|
|
Value = "1"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "No",
|
|
Value = "0"
|
|
}
|
|
}
|
|
)
|
|
.Value(Model.LotTypeConversion.ToString())
|
|
)
|
|
|
|
</div>
|
|
|
|
<div class="col-sm-3">
|
|
<label class="control-label pull-right">Qual Lot:</label>
|
|
</div>
|
|
<div class="col-sm-3">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("QualLot")
|
|
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
.BindTo(new List<SelectListItem>()
|
|
{
|
|
new SelectListItem()
|
|
{
|
|
Text = "Select",
|
|
Value = "-1"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "Yes",
|
|
Value = "1"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "No",
|
|
Value = "0"
|
|
}
|
|
}
|
|
)
|
|
.Value(Model.QualLot.ToString())
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-1">
|
|
<label class="control-label pull-right">Purpose Of Lot/Change Description:</label>
|
|
</div>
|
|
<div class="col-sm-11">
|
|
@Html.TextAreaFor(model => model.PurposeOfRequest, 15, 100, new { id = "txtPurposeOfRequest", @class = "k-textbox", style = "font-size: 11px; width: 100%" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<!-- NEW PANEL ===============================================================-->
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color:crimson">
|
|
Section1-A: Engineering Wafer Lot Start
|
|
</font>
|
|
</h5>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Start Date:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@(Html.Kendo().DateTimePickerFor(model => model.PlannedLotStartDate)
|
|
.Name("txtPlannedLotStartDate"))
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Sch. Close Date:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@(Html.Kendo().DateTimePickerFor(model => model.PlannedScheduledCloseDate)
|
|
.Name("txtPlannedScheduledCloseDate"))
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">de
|
|
<label class="control-label pull-right">Lot Start Charge Dept:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.ChargeDepartment, new { id = "txtChargeDepartment", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Allocation to use:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("AllocationToUse")
|
|
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
.BindTo(new List<SelectListItem>()
|
|
{
|
|
new SelectListItem()
|
|
{
|
|
Text = "Select",
|
|
Value = "Select"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "ATV",
|
|
Value = "ATV"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "HiRel",
|
|
Value = "HiRel"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "IPC",
|
|
Value = "IPC"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "PMD",
|
|
Value = "PMD"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "Fab",
|
|
Value = "Fab"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "Silicon",
|
|
Value = "Silicon"
|
|
}
|
|
}
|
|
)
|
|
.Value((Model.AllocationToUse == null? "Select" : Model.AllocationToUse.ToString()))
|
|
)
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Predicted Cycle Time:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.PredictedCyleTime, new { id = "txtPredictedCyleTime", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Total Qty:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.TotalQty, new { id = "txtTotalQty", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="panel-body bg-warning">
|
|
@*<div class="row">
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">SIGNON:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.SignOn, new { id = "txtSignOn", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">WIP AREA:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.WIPArea, new { id = "txtWIPArea", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Verb:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.Verb1, new { id = "txtVerb1", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
|
|
</div>*@
|
|
<!--NEW ROW ======================================================================================================================================-->
|
|
<div class="row">
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Lot#:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.LotNumber, new { id = "txtLotNumber", @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-4">
|
|
<label class="control-label pull-right">WIP PN#:</label>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
@Html.TextBoxFor(model => model.WIPPartNumber, new { id = "txtWIPPartNumber", Readonly = "Readonly", @class = "k-textbox", style = "background-color:lightblue; width:90px" })
|
|
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<button class="btn-warning" data-toggle="modal" id="btnSelectpart" style="font-size:xx-small">
|
|
Get Part
|
|
</button>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Process Flow:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.ProcessFlow, new { id = "txtProcessFlow", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Start Qty:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.StartQty, new { id = "txtStartQty", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue" })
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<label class="control-label pull-right">Part Desc:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.TextBoxFor(model => model.PartDescription, new { id = "txtPartDescription", @class = "k-textbox", Readonly = "Readonly", style = "background-color:lightblue; width:200px" })
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
@*<div class="col-sm-5">
|
|
<label class="control-label pull-right">Qual lot:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
@Html.EditorFor(model => model.QualLot)
|
|
</div>*@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-2 pull-left">
|
|
<label class="control-label">Record Silicon Lot #s in SPN and tape tags to Traveler</label>
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("RecordSiliconLotInSPNTapeTagTotrav")
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
.BindTo(new List<SelectListItem>()
|
|
{
|
|
new SelectListItem()
|
|
{
|
|
Text = "Select",
|
|
Value = "-1"
|
|
},
|
|
|
|
new SelectListItem()
|
|
{
|
|
Text = "Yes",
|
|
Value = "1"
|
|
},
|
|
new SelectListItem()
|
|
{
|
|
Text = "No",
|
|
Value = "0"
|
|
}
|
|
}
|
|
)
|
|
.Value(Model.RecordSiliconLotInSPNTapeTagTotrav.ToString())
|
|
)
|
|
</div>
|
|
<div class="col-sm-4 pull-left">
|
|
<label class="control-label">Silicon Lot#s: Cassette 1</label>
|
|
@Html.TextAreaFor(model => model.SiliconLotNoCassette1, 5, 100, new { id = "txtSiliconLotNoCassette1", @class = "k-textbox", style = "font-size: 11px; width: 100%" })
|
|
</div>
|
|
<div class="col-sm-6 pull-left">
|
|
<label class="control-label">VERB: COMMENT</label>
|
|
@Html.TextAreaFor(model => model.VerbComment, 5, 100, new { id = "txtVerbComment", @class = "k-textbox", style = "font-size: 11px; width: 100%" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
@*<div class="col-sm-5">
|
|
<div class="col-sm-1">
|
|
<label class="control-label pull-right">VERB: COMMENT</label>
|
|
</div>
|
|
<div class="col-sm-11">
|
|
@Html.TextAreaFor(model => model.VerbComment, 11, 100, new { id = "txtVerbComment", @class = "k-textbox", style = "font-size: 11px; width: 100%" })
|
|
</div>
|
|
</div*@>
|
|
<div class="col-sm-12">
|
|
@if (@Model.CurrentStep != 3)
|
|
{
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.ViewModels.LTMaterialViewModel>()
|
|
.Name("MaterialList")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.ID).Visible(false);
|
|
columns.Bound(a => a.LTWorkRequestID).Visible(false);
|
|
columns.Bound(a => a.WIPPartNumber).Width("50px");
|
|
//columns.Bound(a => a.Description);
|
|
columns.Bound(a => a.EPISiliconPartNumber).Width("50px");
|
|
columns.Bound(a => a.Quantity).Width("50px");
|
|
columns.Bound(a => a.Supplier).Width("50px");
|
|
columns.Bound(a => a.Source).Width("50px");
|
|
columns.Command(command => { command.Edit(); }).Width("50px");
|
|
columns.Command(command => { command.Destroy(); }).Width("50px");
|
|
})
|
|
.ToolBar(toolbar => toolbar.Create().Text("Add EPI"))
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:250px; width:100%; font-size: 8px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Events(e => e.Change("RefreshStartQtyData").Error("OnMaterialDetailError"))
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ID);
|
|
model.Field(f => f.WIPPartNumber).DefaultValue(Model.WIPPartNumber).Editable(false);
|
|
model.Field(f => f.EPISiliconPartNumber).DefaultValue(Model.DefaultEPISiliconPartNumber);
|
|
model.Field(f => f.LTWorkRequestID).DefaultValue(Model.ID);
|
|
})
|
|
.PageSize(40)
|
|
.Read(read => read.Action("GetMaterialDetails", "LotTraveler", new { workRequestID = Model.ID }))
|
|
.Update(u => u.Action("UpdateMaterialDetail", "LotTraveler"))
|
|
.Destroy(u => u.Action("DeleteMaterialDetail", "LotTraveler"))
|
|
.Create(create => create.Action("InsertMaterialDetail", "LotTraveler"))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
//.Events(e => e.Edit("onEdit"))
|
|
)
|
|
}
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel-body bg-warning">
|
|
<table class="table td" border="1" width="100%" style="border-color:lightgrey; font-size:9px">
|
|
<thead>
|
|
<tr style="background-color: lightgray; font-weight:bold; font-size:11px">
|
|
<td width="10%" colspan="7">
|
|
Lot Start Check List
|
|
</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td style="background-color: lightgray; font-weight: bold; font-size: 10px">
|
|
OnHand/Existing
|
|
</td>
|
|
<td>
|
|
Silicon
|
|
@Html.EditorFor(model => model.SiliconOnHand)
|
|
</td>
|
|
<td>
|
|
Reticle Set
|
|
@Html.EditorFor(model => model.ReticleOnHand)
|
|
</td>
|
|
<td>
|
|
SPN transfer
|
|
@Html.EditorFor(model => model.SPNTransferOnHand)
|
|
</td>
|
|
<td>
|
|
Probe Card
|
|
@Html.EditorFor(model => model.ProbeCardOnHand)
|
|
</td>
|
|
<td>
|
|
Probe Recipe
|
|
@Html.EditorFor(model => model.ProbeRecipeOnHand)
|
|
</td>
|
|
<td>
|
|
Process Change Details
|
|
@Html.EditorFor(model => model.ProcessChangeDetailsOnHand)
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label class="control-label pull-right">Comments</label>
|
|
</td>
|
|
<td colspan="6">
|
|
@Html.TextAreaFor(model => model.LotStartCheckListComments, 5, 100, new { id = "txtLotStartCheckListComments", @class = "k-textbox", style = "font-size: 11px; width: 100%" })
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
/**/
|
|
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-info">
|
|
<div class="pull-left">
|
|
<h5>
|
|
<font style="color:crimson">
|
|
Section2: OLHOLD and Engineering Deviation Specified by Originator
|
|
</font>
|
|
</h5>
|
|
|
|
</div>
|
|
<div class="pull-right">
|
|
<button class="btn btn-warning btn-xs" data-toggle="modal" id="addHoldStep" style="font-size:x-small">
|
|
Add Hold
|
|
</button>
|
|
|
|
</div>
|
|
</div>
|
|
<!-- NEW PANEL ===============================================================-->
|
|
<div class="panel-body bg-warning">
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTHoldStep>()
|
|
.Name("HoldSteps")
|
|
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.ID).Visible(false);
|
|
columns.Bound(a => a.LTWorkRequestID).Visible(false);
|
|
columns.Bound(a => a.BaseFlow).Width("50px");
|
|
columns.Bound(a => a.Location).Width("50px");
|
|
columns.Bound(a => a.OperSequence).Width("25px");
|
|
columns.Bound(a => a.Operation).Width("50px");
|
|
columns.Bound(a => a.OperationDescription).Width("100px");
|
|
columns.Bound(a => a.ChangeInstructions).ClientTemplate("#=changeNewLine(ChangeInstructions)#").Width("250px");
|
|
columns.Bound(a => a.FileNames).ClientTemplate("#=buildLinks(FileNames, SWRNumber, Revision)#").Width("100px");
|
|
columns.Command(c => c.Custom("Upload File").Click("UploadHoldStepAttachment")).Width("50px");
|
|
columns.Command(c => c.Custom("Edit").Click("EditHoldStep")).Width("50px");
|
|
columns.Command(c => c.Destroy()).Width("50px");
|
|
})
|
|
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:350px; width:100%; font-size: 8px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Events(e => e.Error("OnHoldStepError"))
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ID);
|
|
})
|
|
.PageSize(40)
|
|
.Read(read => read.Action("GetHoldSteps", "LotTraveler", new { workRequestID = Model.ID }))
|
|
.Destroy(u => u.Action("DeleteHoldStep", "LotTraveler"))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
)
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-info">
|
|
<div class="pull-left">
|
|
<h5>
|
|
<font style="color:crimson">
|
|
Section3: Document Attachment
|
|
</font>
|
|
</h5>
|
|
|
|
</div>
|
|
<div class="pull-right">
|
|
<div class="panel-body bg-info">
|
|
<div class="pull-left">
|
|
<button class="btn btn-warning btn-xs" data-toggle="modal" id="UploadWRAttachment" style="font-size:x-small">
|
|
Upload Files
|
|
</button>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
@if (@Model.CurrentStep != 3)
|
|
{
|
|
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTWorkRequestAttachment>()
|
|
.Name("WorkRequestAttachments")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.ID).Visible(false);
|
|
columns.Bound(a => a.FileGUID).Visible(false);
|
|
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
|
|
//.ClientTemplate("<a href='" + GlobalVars.AttachmentUrl + "LotTraveler/#=SWRNumber#/#=FileGUID#.#=FileExtension#' target='_blank'>#=FileName#</a>");
|
|
columns.Bound(a => a.DocType).Width("50px");
|
|
columns.Bound(a => a.Comments).Width("300px");
|
|
columns.Bound(a => a.UploadedByName).Width("50px");
|
|
columns.Bound(a => a.UploadDateTime).Format("{0:MM/dd/yy hh:mm:ss}").Width("50px");
|
|
columns.Command(c => c.Edit()).Width("100px");
|
|
columns.Command(c => c.Destroy()).Width("100px");
|
|
columns.Command(c => c.Custom("View").Click("DownloadAttachment")).Width("100px"); ;
|
|
|
|
})
|
|
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
//.Batch(false)
|
|
.ServerOperation(false)
|
|
.Events(events => events.RequestEnd("RefreshHoldStepGrid"))
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ID);
|
|
model.Field(a => a.UploadDateTime).Editable(false);
|
|
model.Field(a => a.UploadedByName).Editable(false);
|
|
model.Field(a => a.FileName).Editable(false);
|
|
})
|
|
.PageSize(50)
|
|
.Read(read => read.Action("GetWorkRequestAttachments", "LotTraveler", new { workRequestID = Model.ID }))
|
|
.Destroy(destroy => destroy.Action("DeleteWorkRequestAttachment", "LotTraveler"))
|
|
.Update(update => update.Action("UpdateWorkRequestAttachment", "LotTraveler"))
|
|
)
|
|
)
|
|
}
|
|
else
|
|
{
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTWorkRequestAttachment>()
|
|
.Name("WorkRequestAttachments")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.ID).Visible(false);
|
|
columns.Bound(a => a.FileGUID).Visible(false);
|
|
columns.Bound(a => a.FileName).Template(@<text> @Html.ActionLink(@item.FileName.ToString(), null)</text>).Width("100px");
|
|
//.ClientTemplate("<a href='" + GlobalVars.AttachmentUrl + "LotTraveler/#=SWRNumber#/#=FileGUID#.#=FileExtension#' target='_blank'>#=FileName#</a>");
|
|
|
|
columns.Bound(a => a.DocType).Width("50px");
|
|
columns.Bound(a => a.Comments).Width("300px");
|
|
columns.Bound(a => a.UploadedByName).Width("50px");
|
|
columns.Bound(a => a.UploadDateTime).Format("{0:MM/dd/yy hh:mm:ss}").Width("50px");
|
|
//columns.Command(c => c.Edit()).Width("100px");
|
|
columns.Command(c => c.Custom("DownloadAttachment").Text("View")).Width("100px"); ;
|
|
|
|
})
|
|
.Resizable(e => e.Columns(true))
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:125; width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
//.Batch(false)
|
|
.ServerOperation(false)
|
|
.Events(events => events.RequestEnd("RefreshHoldStepGrid"))
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ID);
|
|
model.Field(a => a.UploadDateTime).Editable(false);
|
|
model.Field(a => a.UploadedByName).Editable(false);
|
|
model.Field(a => a.FileName).Editable(false);
|
|
})
|
|
.PageSize(50)
|
|
.Read(read => read.Action("GetWorkRequestAttachments", "LotTraveler", new { workRequestID = Model.ID }))
|
|
//.Update(update => update.Action("UpdateWorkRequestAttachment", "LotTraveler"))
|
|
)
|
|
)
|
|
}
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="panel-heading">
|
|
@if (ViewBag.IsApprover == "true" && Model.CurrentStep == 3)
|
|
{
|
|
<button class="btn btn-warning btn-xs" data-toggle="modal" id="reAssignApprovers" style="font-size:x-small">
|
|
Re-Assign Approvers
|
|
</button>
|
|
<button class="btn btn-warning btn-xs" data-toggle="modal" id="additionalApprovers" style="font-size:x-small">
|
|
Additional Approvers
|
|
</button>
|
|
}
|
|
</div>
|
|
|
|
|
|
<div class="panel-body bg-warning">
|
|
<div class="col-sm-offset-0">
|
|
@if (GlobalVars.IsAdminValueNotNull(Session))
|
|
{
|
|
if (GlobalVars.IsAdmin(Session) && (Request.IsAuthenticated))
|
|
{
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.ViewModels.ApproversListViewModel>()
|
|
.Name("ApproversList")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.UserID).Visible(false);
|
|
columns.Bound(a => a.ApprovalID).Visible(false);
|
|
columns.Bound(a => a.FullName);
|
|
columns.Bound(a => a.RoleName);
|
|
columns.Bound(a => a.SubRoleName);
|
|
columns.Bound(a => a.Status);
|
|
columns.Bound(a => a.AssignedDate).Format("{0:MM/dd/yy hh:mm:ss}"); ;
|
|
columns.Bound(a => a.CompletedDate).Format("{0:MM/dd/yy hh:mm:ss}"); ;
|
|
columns.Bound(a => a.Comments);
|
|
//columns.Bound(p => p.Status).ClientTemplate("#=buildButtons(Status)#");
|
|
columns.Command(command => command.Custom("Re-Assign").Click("showReAssignRole")).Width("100px");
|
|
|
|
})
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:200px; width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
//.Batch(false)
|
|
.ServerOperation(false)
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ApprovalID);
|
|
})
|
|
.PageSize(20)
|
|
.Read(read => read.Action("GetApproversList", "LotTraveler", new { workRequestID = Model.ID, step = Model.CurrentStep }))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
|
|
)
|
|
}
|
|
else
|
|
{
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.ViewModels.ApproversListViewModel>()
|
|
.Name("ApproversList")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.UserID).Visible(false);
|
|
columns.Bound(a => a.ApprovalID).Visible(false);
|
|
columns.Bound(a => a.FullName);
|
|
columns.Bound(a => a.RoleName);
|
|
columns.Bound(a => a.SubRoleName);
|
|
columns.Bound(a => a.Status);
|
|
columns.Bound(a => a.AssignedDate).Format("{0:MM/dd/yy hh:mm:ss}"); ;
|
|
columns.Bound(a => a.CompletedDate).Format("{0:MM/dd/yy hh:mm:ss}"); ;
|
|
columns.Bound(a => a.Comments);
|
|
|
|
|
|
})
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:200px; width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
//.Batch(false)
|
|
.ServerOperation(false)
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ApprovalID);
|
|
})
|
|
.PageSize(20)
|
|
.Read(read => read.Action("GetApproversList", "LotTraveler", new { workRequestID = Model.ID, step = Model.CurrentStep }))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
|
|
)
|
|
}
|
|
|
|
}
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
<!-- =============================================================MODAL WINDOWS==================================================================================-->
|
|
@*<div id="timeout">
|
|
<h1>Page About To Timeout</h1>
|
|
<p>
|
|
You will be automatically be redirected to Special Request list in 1 minute.<br />
|
|
To remain on this page please close this window.
|
|
</div>*@
|
|
|
|
<div class="modal fade" id="timeout" tabindex="0" role="dialog" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog modal-lg" style="width:500px;">
|
|
<div class="modal-content">
|
|
<div class="modal-header" style="background-color: #fce0a3;">
|
|
<h3 class="modal-title">Page About To Timeout</h3>
|
|
</div>
|
|
<div class="modal-body" style="background-color: crimson; font-size: 20px; color:white">
|
|
You will automatically be redirected to Special Request List page in 1 minute.<br />
|
|
To remain on this page please close this window or press the ESC key.
|
|
</div>
|
|
<div class="modal-footer" style="background-color: #fce0a3; ">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal fade" id="WIPPartForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content" style="width: 700px">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">WIP Part Attributes:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<table border="0" width="100%">
|
|
<tr>
|
|
<td width="20%">
|
|
<label for="BaseFlow">Enter Part Search:</label>
|
|
</td>
|
|
|
|
<td width="30%">
|
|
@Html.TextBox("txtSearch", null, new { @class = "k-textbox" })
|
|
</td>
|
|
<td width="50%">
|
|
<input style="margin-top: 5px;" type="button" id='jqxButtonSearchParts' value="Search Parts" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-5">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<select multiple id="lstParts" style="height: 250px; width: 200px; font-family: Tahoma; border-color: lightgrey" class="jqx-combobox-multi-item"></select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
<div class="control-group">
|
|
<div class="row">
|
|
<div class="col-sm-5">
|
|
<label for="BaseFlow">EPI Silicon Part:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
<div class="controls k-textbox" style="width:100px; font-size: 10px">
|
|
<input type="text" class="form-control" id="txtModEPiSiliconPartNumber" style="font-size: 10px" disabled="disabled">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-5">
|
|
<label for="Description">Process Flow:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
<div class="controls k-textbox" style="width:100px; font-size: 10px">
|
|
<input type="text" class="form-control" id="txtModProcessFlow" style="font-size: 10px" disabled="disabled">
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-5">
|
|
<label for="Description">Part Description:</label>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
<div class="controls k-textbox" style="width:200px; font-size: 10px">
|
|
<input type="text" class="form-control" id="txtModPartDesc" style="font-size: 10px" disabled="disabled">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@*<div class="row">
|
|
<div class="col-sm-3">
|
|
<div class="control-group">
|
|
<label for="Location">Part Number:</label>
|
|
<div class="controls">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("ModPartNumberList")
|
|
.DataTextField("PartNumber")
|
|
.DataValueField("SiliconAndDesc")
|
|
.HtmlAttributes(new { style = "width:100px;font-size: 10px" })
|
|
.Events(e => e.Select("PartNumberOnSelect")
|
|
)
|
|
.OptionLabel("Select PartNumber")
|
|
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-3">
|
|
<div class="control-group">
|
|
<label for="BaseFlow">EPI Silicon Part:</label>
|
|
<div class="controls k-textbox" style="width:100px; font-size: 10px">
|
|
<input type="text" class="form-control" id="txtModEPiSiliconPartNumber">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="control-group">
|
|
<label for="Description">Part Description:</label>
|
|
<div class="controls k-textbox" style="width:365px; font-size: 10px">
|
|
<input type="text" class="form-control" id="txtModPartDesc" style="font-size: 10px" disabled="disabled">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>*@
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
|
<button type="button" class="btn btn-primary" id="SavePart">Confirm Part Selection</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div class="modal fade" id="AddHoldStepForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content" style="width: 800px">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Hold Step Attributes:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
<div class="col-sm-2">
|
|
<div class="control-group">
|
|
<label for="BaseFlow">Base Flow:</label>
|
|
<div class="controls k-textbox" style="width:100px; font-size: 10px">
|
|
<input type="text" class="form-control" id="txtBaseFlow" disabled="disabled">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="control-group">
|
|
<label for="Location">Location:</label>
|
|
<div class="controls">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("BaseFlowLocations")
|
|
.DataTextField("Location")
|
|
.DataValueField("Location")
|
|
.HtmlAttributes(new { style = "width:100px;font-size: 10px" })
|
|
.Events(e => e.Select("LocationsOnSelect")
|
|
)
|
|
.OptionLabel("Select Location")
|
|
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="control-group">
|
|
<label for="Operation">Operation:</label>
|
|
<div class="controls">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("BaseFlowOperations")
|
|
.DataTextField("Operation")
|
|
.DataValueField("OperationDesc")
|
|
.HtmlAttributes(new { style = "width:100px;font-size: 10px" })
|
|
.Events(e => e.Select("OperationsOnSelect"))
|
|
.OptionLabel("Select Operation")
|
|
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
<div class="control-group">
|
|
<label for="Description">Description:</label>
|
|
<div class="controls k-textbox" style="width:365px; font-size: 10px">
|
|
<input type="text" class="form-control" id="txtOperationDesc" style="font-size: 10px" disabled="disabled">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="control-group">
|
|
<div class="col-sm-12">
|
|
<label for="Instructions">Instructions:</label>
|
|
<textarea class="form-control" rows="15" id="ChangeInstructions" style="font-size: 10px"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
|
<button type="button" class="btn btn-primary" id="SaveAddHold">Save</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal fade" id="AddHoldStepAttachmentForm" data-url='@Url.Action("GetHoldStep")' tabindex="0" role="dialog" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Upload Attachments for the Hold Step:</h4>
|
|
</div>
|
|
<div class="modal-body" id="HoldStepAttachmentContainer">
|
|
@Html.Partial("_HoldStepAttachments", Model.LTHoldStep)
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="ApprovalComments" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Enter Approval Comments:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<textarea class="form-control" rows="3" id="approvalComments"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary" id="submitApprovalComments">Confirm Approval</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="RejectComments" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Enter Reject Comments:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<textarea class="form-control" rows="3" id="rejectComments"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary" id="submitRejectComments">Confirm Reject</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="ReAssignApproval" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Re-Assign for Approval From: <label class="bg-danger" id="ReAssignApproverFromLabel">Me</label></h4>
|
|
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<h4 class="modal-title" id="myModalLabel">Re-Assign for Approval to:</h4>
|
|
<div id='lstReAssignApproval'>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary" id="ConfirmReAssignment">Confirm Re-assignment</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal fade" id="WinRevisionComments" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Enter Revision Comments:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<textarea class="form-control" rows="3" id="revisionComments"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary" id="submitRevisionComments">Confirm Approval</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="modal fade" id="WinEPIRevisionComments" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Enter Revision Comments:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<textarea class="form-control" rows="3" id="revisionEPIComments"></textarea>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
<button type="button" class="btn btn-primary" id="submitEPIRevisionComments">Confirm Approval</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="WinAttachDocuments" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
<h4 class="modal-title" id="myModalLabel">Select File:</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<label for="DocumentType">Document Type:</label>
|
|
<div class="controls" style="width:200px; font-size: 10px">
|
|
<div id="ex" class="k-content">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("WRAttachDocType")
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
.BindTo(new List<SelectListItem>() {
|
|
new SelectListItem() {
|
|
Text = "Select",
|
|
Value = "Select"
|
|
},
|
|
|
|
new SelectListItem() {
|
|
Text = "Instructions",
|
|
Value = "Instructions"
|
|
},
|
|
new SelectListItem() {
|
|
Text = "Traveler",
|
|
Value = "Traveler"
|
|
},
|
|
new SelectListItem() {
|
|
Text = "Other",
|
|
Value = "Other"
|
|
}
|
|
|
|
})
|
|
.Value("1")
|
|
.HtmlAttributes(new { style = "width:100px;" })
|
|
)
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-sm-8">
|
|
|
|
@(Html.Kendo().Upload()
|
|
.Name("files")
|
|
.Async(a => a
|
|
.Save("AttachSaveWorkRequest", "LotTraveler", new { workRequestID = Model.ID, currentRevision = Model.Revision, swrNo = Model.SWRNumber })
|
|
.AutoUpload(true)
|
|
)
|
|
.Events(events => events.Success("RefreshWorkReqAttachmentsGrid").Upload("UploadAdditionalData"))
|
|
.ShowFileList(false)
|
|
|
|
)
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<label for="WRAttachmentComments">Comments:</label>
|
|
<textarea class="form-control" rows="3" id="WRAttachmentComments"></textarea>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
|
|
@Html.Partial("_LTReassignOriginator")
|
|
|
|
<script type="text/javascript">
|
|
var holdStepFunction = ""
|
|
var holdStepID;
|
|
var docType = 6;
|
|
var partNumberDropDownCreated = 0;
|
|
var varCurrentStep = $("#currentStep").val();
|
|
var revisionSaved = false;
|
|
var objectFormData;
|
|
var currentEPIRecordID;
|
|
var isMaterialGridDirty = false;
|
|
|
|
$(document).ready(function () {
|
|
|
|
$("#files").on('click', function (e) {
|
|
|
|
if ($("#WRAttachDocType").data("kendoDropDownList").value() == "Select" ||
|
|
$("#WRAttachmentComments").val() == '') {
|
|
|
|
alert('Document Type and Comments both needs to filled in before uploading a a file')
|
|
e.preventDefault();
|
|
}
|
|
});
|
|
|
|
var grid = $("#MaterialList").data("kendoGrid");
|
|
grid.bind("edit", grid_edit);
|
|
grid.bind("save", grid_update);
|
|
grid.bind("cancel", grid_cancel);
|
|
grid.bind("remove", grid_remove);
|
|
|
|
})
|
|
|
|
|
|
function grid_edit(e) {
|
|
|
|
//alert("Edit");
|
|
//$("#SaveDocument").attr("disabled", true);
|
|
//$("#SubmitDocument").attr("disabled", true);
|
|
isMaterialGridDirty = true;
|
|
}
|
|
|
|
function grid_update(e) {
|
|
//e.preventDefault();
|
|
//alert("Update");
|
|
//$("#SaveDocument").attr("disabled", false);
|
|
//$("#SubmitDocument").attr("disabled", false);
|
|
isMaterialGridDirty = false;
|
|
}
|
|
|
|
function grid_cancel(e) {
|
|
//alert("Cancel");
|
|
//$("#SaveDocument").attr("disabled", false);
|
|
//$("#SubmitDocument").attr("disabled", false);
|
|
isMaterialGridDirty = false;
|
|
|
|
}
|
|
|
|
function grid_remove(e) {
|
|
isMaterialGridDirty = false;
|
|
}
|
|
|
|
function RefreshStartQtyData() {
|
|
var vgrid = $("#MaterialList").data("kendoGrid");
|
|
//Getting grid items
|
|
var totalQty = 0;
|
|
var items = vgrid.dataSource.data();
|
|
|
|
for (i = 0; i < items.length; i++) {
|
|
var item = items[i];
|
|
|
|
totalQty = totalQty + item.Quantity;
|
|
}
|
|
|
|
$("#txtStartQty").val(totalQty);
|
|
//$("#SaveDocument").attr("disabled", true);
|
|
//$("#SubmitDocument").attr("disabled", true);
|
|
//alert("Start");
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function ReturnModelObject() {
|
|
var departments = $("#DepartmentIDs").data("kendoMultiSelect").value();
|
|
var moduleIDs = $("#ModuleIDs").data("kendoMultiSelect").value();
|
|
|
|
var objectData = {
|
|
ID: '@Model.ID',
|
|
Title: $("#txtTitle").val(),
|
|
CurrentStep: $("#currentStep").val(),
|
|
DepartmentIDs: departments,
|
|
ModuleIDs: moduleIDs,
|
|
LotType: $("#LotType").data("kendoDropDownList").value(),
|
|
PCRBNumber: $("#txtPCRBNumber").val(),
|
|
EngLotStartRequired: $("#EngLotStartRequired").data("kendoDropDownList").value(),
|
|
LotTypeConversion: $("#LotTypeConversion").data("kendoDropDownList").value(),
|
|
QualLot: $("#QualLot").data("kendoDropDownList").value(),
|
|
PurposeOfRequest: $("#txtPurposeOfRequest").val(),
|
|
PlannedLotStartDate: $("#txtPlannedLotStartDate").val(),
|
|
PlannedScheduledCloseDate: $("#txtPlannedScheduledCloseDate").val(),
|
|
ChargeDepartment: $("#txtChargeDepartment").val(),
|
|
AllocationToUse: $("#AllocationToUse").data("kendoDropDownList").value(),
|
|
PredictedCyleTime: $("#txtPredictedCyleTime").val(),
|
|
//WIPArea: $("#txtWIPArea").val(),
|
|
//EmployeeID: $("#txtEmployeeID").val(),
|
|
//EstimatedBinCLoseDate: $("#txtEstimatedBinCLoseDate").val(),
|
|
TotalQty: $("#txtTotalQty").val(),
|
|
LotNumber: $("#txtLotNumber").val(),
|
|
WIPPartNumber: $("#txtWIPPartNumber").val(),
|
|
DefaultEPISiliconPartNumber: $("#DefaultEPISiliconPartNumber").val(),
|
|
ProcessFlow: $("#txtProcessFlow").val(),
|
|
StartQty: $("#txtStartQty").val(),
|
|
PartDescription: $("#txtPartDescription").val(),
|
|
VerbComment: $("#txtVerbComment").val(),
|
|
SiliconOnHand: ($('#SiliconOnHand').is(':checked') ? 1 : 0),
|
|
//SiliconExpectedDueDate: $("#txtSiliconExpectedDueDate").val(),
|
|
//SiliconComments: $("#txtSiliconComments").val(),
|
|
ReticleOnHand: ($('#ReticleOnHand').is(':checked') ? 1 : 0),
|
|
//ReticleExpectedDueDate: $("#txtReticleExpectedDueDate").val(),
|
|
//ReticleComments: $("#txtReticleComments").val(),
|
|
SPNTransferOnHand: ($('#SPNTransferOnHand').is(':checked') ? 1 : 0),
|
|
//SPNTransferExpectedDueDate: $("#txtSPNTransferExpectedDueDate").val(),
|
|
//SPNTransferComments: $("#txtSPNTransferComments").val(),
|
|
ProbeCardOnHand: ($('#ProbeCardOnHand').is(':checked') ? 1 : 0),
|
|
//ProbeCardExpectedDueDate: $("#txtProbeCardExpectedDueDate").val(),
|
|
//ProbeCardComments: $("#txtProbeCardComments").val(),
|
|
ProbeRecipeOnHand: ($('#ProbeRecipeOnHand').is(':checked') ? 1 : 0),
|
|
//ProbeRecipeExpectedDueDate: $("#txtProbeRecipeExpectedDueDate").val(),
|
|
//ProbeRecipeComments: $("#txtProbeRecipeComments").val(),
|
|
ProcessChangeDetailsOnHand: ($('#ProcessChangeDetailsOnHand').is(':checked') ? 1 : 0),
|
|
//ProcessChangeDetailsDueDate: $("#txtProcessChangeDetailsDueDate").val(),
|
|
//RevisionComments: $("#revisionComments").val()
|
|
LotStartCheckListComments: $("#txtLotStartCheckListComments").val(),
|
|
RecordSiliconLotInSPNTapeTagTotrav :$("#RecordSiliconLotInSPNTapeTagTotrav").data("kendoDropDownList").value(),
|
|
SiliconLotNoCassette1: $("#txtSiliconLotNoCassette1").val(),
|
|
}
|
|
|
|
return objectData;
|
|
}
|
|
|
|
$('form').submit(function (e) {
|
|
|
|
e.preventDefault();
|
|
|
|
if (isMaterialGridDirty)
|
|
{
|
|
alert("The Material List Grid section is in [Edit] mode.\nPlease click on Update/Cancel in the Material List Grid section before saving other parts of the form data");
|
|
return;
|
|
}
|
|
|
|
var data = ReturnModelObject();
|
|
|
|
$.ajax({
|
|
url: '/LotTraveler/Edit',
|
|
type: "POST",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(data),
|
|
success: function (result) {
|
|
|
|
alert(result);
|
|
|
|
if (result != "Successfully Saved")
|
|
{
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
}
|
|
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
alert("There was an error while saving the data.Please re-load the page and check if your changes were saved \n. If the changes were not saved please contact the system administrator");
|
|
}
|
|
|
|
})
|
|
|
|
return false;
|
|
});
|
|
|
|
|
|
//=========================REgion Submit
|
|
$('#SubmitDocument').on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
if (isMaterialGridDirty) {
|
|
alert("The Material List Grid section is in [Edit] mode.\nPlease click on Update/Cancel in the Material List Grid section before submitting the form");
|
|
return;
|
|
}
|
|
|
|
var data = ReturnModelObject();
|
|
var errorMsg = "";
|
|
|
|
|
|
// validation
|
|
if ($("#txtTitle").val().length == 0)
|
|
errorMsg += "[Title], "
|
|
|
|
if ($("#DepartmentIDs").data("kendoMultiSelect").value().length == 0)
|
|
errorMsg += "[Department], ";
|
|
|
|
//if ($("#ModuleIDs").data("kendoMultiSelect").value().length == 0)
|
|
// errorMsg += "[Module], "
|
|
|
|
if (($("#EngLotStartRequired").data("kendoDropDownList").value() == "-1"))
|
|
errorMsg += "[Eng Lot Start], ";
|
|
|
|
if (($("#LotTypeConversion").data("kendoDropDownList").value() == "-1"))
|
|
errorMsg += "[Lot Type Conversion], ";
|
|
|
|
if ($("#QualLot").data("kendoDropDownList").value() == "-1")
|
|
errorMsg += "[Qual Lot], " ;
|
|
|
|
//if ($("#txtAllocationToUse").val().length == 0)
|
|
if ($("#AllocationToUse").data("kendoDropDownList").value() == "Select")
|
|
errorMsg += "[Allocation To Use], ";
|
|
|
|
if ($("#txtChargeDepartment").val().length == 0)
|
|
errorMsg += "[Lot Start Charge Department], ";
|
|
|
|
if ($("#txtTotalQty").val().length == 0 || parseInt($("#txtTotalQty").val()) <= 0) {
|
|
errorMsg += "[Total Qty], ";
|
|
}
|
|
|
|
|
|
|
|
if ($("#txtStartQty").val().length == 0 || parseInt($("#txtStartQty").val()) <=0 ) {
|
|
errorMsg += "[Start Qty], ";
|
|
}
|
|
|
|
|
|
if ($("#EngLotStartRequired").data("kendoDropDownList").value() == 1)
|
|
{
|
|
|
|
//if ($("#txtAllocationToUse").val().length == 0)
|
|
// errorMsg += "[Allocation to use]";
|
|
|
|
if ($("#txtWIPPartNumber").val().length == 0)
|
|
errorMsg += "[WIP PartNumber], ";
|
|
}
|
|
|
|
|
|
if ($("#txtTotalQty").val() != 25 && parseInt($("#txtTotalQty").val()) != 50) {
|
|
alert("Total Qty needs to be either 25 or 50");
|
|
return false;
|
|
}
|
|
|
|
if (parseInt($("#txtStartQty").val()) > parseInt($("#txtTotalQty").val())) {
|
|
alert("Start Qty cannot exceed Total Qty");
|
|
return false;
|
|
}
|
|
|
|
if (errorMsg.length != 0) {
|
|
alert(errorMsg + " fields need to be filled in before submitting the Work Request for submission")
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
$.ajax({
|
|
url: '/LotTraveler/Edit',
|
|
type: "POST",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(data),
|
|
success: function (result) {
|
|
|
|
if (result != "Successfully Saved") {
|
|
alert(result);
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
}
|
|
else {
|
|
$("#SubmitDocument").attr("disabled", false);
|
|
submitForApproval();
|
|
}
|
|
},
|
|
error: function (jqXHR, textStatus, errorThrown) {
|
|
|
|
alert("There was an error while saving the data.Please re-load the page and check if your changes were saved \n. If the changes were not saved please contact the system administrator");
|
|
}
|
|
});
|
|
|
|
})
|
|
|
|
|
|
|
|
var submitForApproval = function () {
|
|
$.ajax({
|
|
url: "/LotTraveler/SubmitDocument",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: "@Model.ID",
|
|
documentType: docType
|
|
},
|
|
success: function (data) {
|
|
|
|
if (data == 'Redirect') {
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
|
|
}
|
|
else if (data == 'ITAR') {
|
|
alert('You are not Authorized to submit this document as it contains ITAR data');
|
|
}
|
|
else {
|
|
// TODO alert an error message
|
|
}
|
|
},
|
|
error: function (result) {
|
|
alert("Failed on Submit");
|
|
$("#SubmitDocument").attr("disabled", true);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
// REGION - AddHoldSteps ==================================================================================================================================
|
|
|
|
|
|
|
|
$("#addHoldStep").on('click', function (e) {
|
|
e.preventDefault();
|
|
|
|
var url = "/LotTraveler/IsWorkRequestDocLockedByUser";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: '@Model.ID'
|
|
},
|
|
success: function (result) {
|
|
|
|
if (result == 'True') {
|
|
holdStepID = -1;
|
|
|
|
if ($("#txtProcessFlow").val().length == 0) {
|
|
alert("Please enter the Process Flow, before adding a Hold Step")
|
|
return false;
|
|
}
|
|
|
|
holdStepFunction = "Add";
|
|
displayAddHoldStepForm();
|
|
|
|
}
|
|
else
|
|
{
|
|
alert("In order to do the UPDATE or SUBMIT operation the record needs to exclusively locked by you.\nThe record was unlocked by the system due to inactivity for more than 30 minutes, hence the update was not successful");
|
|
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
}
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
//return false;
|
|
|
|
})
|
|
|
|
function EditHoldStep(e) {
|
|
e.preventDefault();
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
var url = "/LotTraveler/IsWorkRequestDocLockedByUser";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: '@Model.ID'
|
|
},
|
|
success: function (result) {
|
|
|
|
|
|
if (result == 'True') {
|
|
holdStepFunction = "Edit";
|
|
|
|
|
|
holdStepID = dataItem.ID;
|
|
var location = dataItem.Location;
|
|
var operation = dataItem.Operation + '-' + dataItem.OperSequence;
|
|
var operationDescription = dataItem.OperationDescription;
|
|
var changeInstructions = dataItem.ChangeInstructions;
|
|
//alert(operation);
|
|
//alert(holdStepID);
|
|
displayAddHoldStepForm();
|
|
//set the selected location
|
|
var locationList = $("#BaseFlowLocations").data("kendoDropDownList");
|
|
locationList.value(location);
|
|
|
|
// set the selected operation
|
|
var url = "/LotTraveler/GetBaseFlowOperations";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
baseFlow: $("#txtProcessFlow").val(),
|
|
location: location
|
|
},
|
|
success: function (data) {
|
|
$("#BaseFlowOperations").data("kendoDropDownList").dataSource.data(data);
|
|
var operationList = $("#BaseFlowOperations").data("kendoDropDownList");
|
|
operationList.text(operation);
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
// set the oper desc
|
|
$("#txtOperationDesc").val(operationDescription);
|
|
$("#ChangeInstructions").val(changeInstructions);
|
|
}
|
|
else {
|
|
|
|
alert("In order to do the UPDATE or SUBMIT operation the record needs to exclusively locked by you.\nThe record was unlocked by the system due to inactivity for more than 30 minutes, hence the update was not successful");
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
}
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$("#SaveAddHold").on("click", function () {
|
|
|
|
var errorMsg = "";
|
|
|
|
var newbaseFlowLocation = $("#BaseFlowLocations").data("kendoDropDownList").value();
|
|
var newbaseFlowOperation = $("#BaseFlowOperations").data("kendoDropDownList").dataItem().OperCode;
|
|
var newbaseFlowOperationSeq = $("#BaseFlowOperations").data("kendoDropDownList").dataItem().SeqCode;
|
|
var newbaseFlowOperDesc = $("#txtOperationDesc").val();
|
|
var newchangeInstructions = $("#ChangeInstructions").val();
|
|
|
|
|
|
var vgrid = $("#HoldSteps").data("kendoGrid");
|
|
//Getting grid items
|
|
var items = vgrid.dataSource.data();
|
|
|
|
for (i = 0; i < items.length; i++) {
|
|
var item = items[i];
|
|
|
|
var existinglocationOperation = $.trim(item.Location) + $.trim(item.Operation);
|
|
var existingOperation = $.trim(item.Operation);
|
|
var existingSeq = $.trim(item.OperSequence);
|
|
|
|
|
|
if ((existinglocationOperation == $.trim(newbaseFlowLocation) + $.trim(newbaseFlowOperation)) &&
|
|
(holdStepID != item.ID)) {
|
|
alert("The Location and Operation Combination has already been entered");
|
|
return
|
|
}
|
|
|
|
|
|
//if (newbaseFlowLocation == $.trim(item.Location))
|
|
//{
|
|
// if (parseInt(newbaseFlowOperationSeq) <= existingSeq)
|
|
// {
|
|
// alert("The Operation has already been passed in the Mfg process");
|
|
// return;
|
|
// }
|
|
|
|
|
|
//}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (newbaseFlowLocation == "Select Location")
|
|
errorMsg = "Location, ";
|
|
|
|
if (newbaseFlowOperation == "Select Operation" || newbaseFlowOperation == '')
|
|
errorMsg = errorMsg + "Operation, ";
|
|
|
|
if (newchangeInstructions.length <= 0)
|
|
errorMsg = errorMsg + "Instructions, ";
|
|
|
|
if (errorMsg != '') {
|
|
alert(errorMsg + 'needs to be entered before saving ');
|
|
|
|
}
|
|
else {
|
|
// save
|
|
var urlString;
|
|
if (holdStepFunction == "Edit")
|
|
urlString = '/LotTraveler/UpdateHoldStep';
|
|
else
|
|
urlString = '/LotTraveler/InsertHoldStep';
|
|
|
|
$.ajax({
|
|
type: "Post",
|
|
url: urlString,
|
|
data: {
|
|
ID: holdStepID, // set by the "Insert" or the "Edit"
|
|
BaseFlow: $("#txtProcessFlow").val(),
|
|
Location: newbaseFlowLocation,
|
|
OperSequence: newbaseFlowOperationSeq,
|
|
Operation: newbaseFlowOperation,
|
|
OperationDescription: newbaseFlowOperDesc,
|
|
ChangeInstructions: newchangeInstructions,
|
|
LTWorkRequestID: $("#LTWorkRequestID").val()
|
|
},
|
|
success: function (result) {
|
|
//alert('Data Saved');
|
|
$("#AddHoldStepForm").modal('hide');
|
|
var grid = $("#HoldSteps").data("kendoGrid");
|
|
grid.dataSource.read();
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
})
|
|
|
|
|
|
var displayAddHoldStepForm = function () {
|
|
|
|
var url = "/LotTraveler/GetBaseFlowLocations";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
baseFlow: $("#txtProcessFlow").val()
|
|
},
|
|
success: function (data) {
|
|
$("#BaseFlowLocations").data("kendoDropDownList").dataSource.data(data);
|
|
$("#txtBaseFlow").val($("#txtProcessFlow").val());
|
|
$("#AddHoldStepForm").modal('show');
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
}
|
|
|
|
$("#btnSelectpart").on("click", function (e) {
|
|
clearSourceLotsListBox();
|
|
//if (partNumberDropDownCreated != 1)
|
|
// displayWIPPartAdd();
|
|
//else {
|
|
e.preventDefault();
|
|
$("#WIPPartForm").modal('show');
|
|
//}
|
|
})
|
|
|
|
var displayWIPPartAdd = function () {
|
|
partNumberDropDownCreated = 1;
|
|
var url = "/LotTraveler/GetPartNumbers";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
|
|
},
|
|
success: function (data) {
|
|
$("#ModPartNumberList").data("kendoDropDownList").dataSource.data(data);
|
|
$("#WIPPartForm").modal('show');
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
$("#lstParts").on('click', function () {
|
|
|
|
$("#txtModEPiSiliconPartNumber").val('');
|
|
$("#txtModPartDesc").val('');
|
|
$("#txtModProcessFlow").val('');
|
|
|
|
var temppart = $("#lstParts").find("option:selected").val();
|
|
if (temppart.length > 0) {
|
|
var tempdata = temppart.split('~');
|
|
|
|
var part = tempdata[0];
|
|
var silicon = tempdata[1];
|
|
var processFlow = tempdata[2];
|
|
var description = tempdata[3];
|
|
|
|
$("#txtModEPiSiliconPartNumber").val(silicon);
|
|
$("#txtModPartDesc").val(description);
|
|
$("#txtModProcessFlow").val(processFlow);
|
|
}
|
|
|
|
|
|
})
|
|
|
|
$("#SavePart").on('click', function () {
|
|
|
|
var temppart = $("#lstParts").find("option:selected").val();
|
|
if (temppart == "Select Part" || temppart.length == 0) {
|
|
alert('Please select a Part');
|
|
return;
|
|
}
|
|
|
|
//alert($("#lstParts").val());
|
|
//var tempdata = $("#lstParts").find("option:selected").text().split;
|
|
var tempvalue = $("#lstParts").find("option:selected").val().split('~');
|
|
|
|
var part = tempvalue[0];
|
|
var silicon = tempvalue[1];
|
|
var processFlow = tempvalue[2];
|
|
var description = tempvalue[3];
|
|
|
|
if (part != $("#OriginalWIPPartNumber").val()) {
|
|
if (!confirm('Warning, changing the part number will remove all lot material rows, are you sure you want to continue?')) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
//return;
|
|
|
|
$("#txtWIPPartNumber").val(part);
|
|
$("#DefaultEPISiliconPartNumber").val(silicon);
|
|
$("#txtPartDescription").val(description);
|
|
$("#txtProcessFlow").val(processFlow);
|
|
|
|
$("#WIPPartForm").modal('hide');
|
|
|
|
|
|
var data = ReturnModelObject();
|
|
|
|
$.ajax({
|
|
url: '/LotTraveler/Edit',
|
|
type: "POST",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: JSON.stringify(data),
|
|
success: function (data) {
|
|
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
|
|
},
|
|
error: function () {
|
|
alert("There was an error while saving the data.Please re-load the page and check if your changes were saved \n. If the changes were not saved please contact the system administrator");
|
|
}
|
|
})
|
|
|
|
})
|
|
|
|
function LocationsOnSelect(e) {
|
|
//alert(e.item);
|
|
var dataItem = this.dataItem(e.item.index());
|
|
var url = "/LotTraveler/GetBaseFlowOperations";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
baseFlow: $("#txtProcessFlow").val(),
|
|
location: dataItem.Location
|
|
},
|
|
success: function (data) {
|
|
$("#BaseFlowOperations").data("kendoDropDownList").dataSource.data(data);
|
|
$("#txtOperationDesc").val('');
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
function OperationsOnSelect(e) {
|
|
var dataItem = this.dataItem(e.item.index());
|
|
$("#txtOperationDesc").val(dataItem.Operation + ' ' + dataItem.OperationDesc);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function buildLinks(fileNames, swrNumber, revision) {
|
|
var template = "";
|
|
|
|
//var fileName = 4;
|
|
|
|
//alert(workRequestID);
|
|
|
|
if (fileNames != null) {
|
|
var tempValue = fileNames.split(',');
|
|
for (var i = 0; i < tempValue.length; i++) {
|
|
var tempValue2 = tempValue[i].split('~');
|
|
|
|
var fileName = tempValue2[0];
|
|
var fileGuid = tempValue2[1];
|
|
|
|
var tempFile = fileName.split('.');
|
|
var fileExtension = tempFile[tempFile.length - 1];
|
|
|
|
//template += "<a href='http://localhost:13065/MRB/Edit?IssueID=" + tempValue[i] + "'>" + tempValue[i] + "</a>" + ", ";
|
|
//if (connection == 'PROD') {
|
|
// template += "<a href='http://temapprovalsystem.irf.com/MRB/Edit?IssueID=" + tempValue[i] + "'>" + tempValue[i] + "</a>" + ", ";
|
|
//}
|
|
//else {
|
|
//template += "<a href='@GlobalVars.AttachmentUrl" + "LotTraveler/" + swrNumber + "/" + fileGuid + "." + fileExtension + "'>" + fileName + "</a><BR>" + " ";
|
|
|
|
template += "<a href='/LotTraveler/DownloadFile?fileGuid=" + fileGuid + "&swrNumber=" + @Model.SWRNumber + "&typeOfDoc=1" + "'>" + fileName + "</a><BR>" + " ";
|
|
|
|
|
|
@*template += '@Html.ActionLink("FileName", "DownloadFile", "LotTraveler", new { fileGuid = "AAA" }, null).ToHtmlString()';
|
|
template = template.replace("FileName", fileName);
|
|
template = template.replace("AAA", fileGuid);*@
|
|
|
|
//}
|
|
|
|
}
|
|
|
|
}
|
|
return template;
|
|
}
|
|
|
|
|
|
//==================================================================================================================================
|
|
|
|
// Atachments
|
|
function UploadHoldStepAttachment(e) {
|
|
e.preventDefault();
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
var holdStepID = dataItem.ID;
|
|
|
|
|
|
|
|
var url = "/LotTraveler/IsWorkRequestDocLockedByUser";
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: '@Model.ID'
|
|
},
|
|
success: function (result) {
|
|
|
|
if (result == 'True') {
|
|
var url = $('#AddHoldStepAttachmentForm').data('url');
|
|
url = url + '?holdStepID=' + holdStepID;
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
success: function (data) {
|
|
|
|
$('#HoldStepAttachmentContainer').html(data);
|
|
$("#AddHoldStepAttachmentForm").modal('show')
|
|
|
|
//var grid = $("#HoldStepAttachments").data("kendoGrid");
|
|
//grid.dataSource.read();
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
}
|
|
else {
|
|
alert("In order to do the UPDATE or SUBMIT operation the record needs to exclusively locked by you.\nThe record was unlocked by the system due to inactivity for more than 30 minutes, hence the update was not successful");
|
|
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
}
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
$("#UploadWorkRequestAttachment").on('click', function () {
|
|
|
|
|
|
})
|
|
|
|
function AttachmentMessage() {
|
|
alert("The documents can only be viewed from Documetum");
|
|
return false;
|
|
}
|
|
|
|
function onFileUploadSuccess(e) {
|
|
var grid = $("#HoldStepAttachments").data("kendoGrid");
|
|
grid.dataSource.read($('#txtECNNumber').val());
|
|
}
|
|
|
|
function checkFileType(e) {
|
|
var files = e.files;
|
|
$.each(files, function () {
|
|
|
|
if (!this.extension.toLowerCase().match(/^(.doc|.docx|.ppt|.pptx|.xls|.xlsx|.pdf|.gif|.jpeg|.jpg|.bmp|.png|.txt)$/)) {
|
|
alert("Only Word/PowerPoint/Excel/PDF/Image/Text files can be uploaded!")
|
|
e.preventDefault();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
function error_handler(e) {
|
|
if (e.errors) {
|
|
var message = "Errors:\n";
|
|
$.each(e.errors, function (key, value) {
|
|
if ('errors' in value) {
|
|
$.each(value.errors, function () {
|
|
message += this + "\n";
|
|
});
|
|
}
|
|
});
|
|
alert(message);
|
|
}
|
|
}
|
|
|
|
|
|
function RefreshWorkReqAttachmentsGrid() {
|
|
var grid = $("#WorkRequestAttachments").data("kendoGrid");
|
|
grid.dataSource.read($("@Model.ID").val());
|
|
|
|
// RefreshHoldStepGrid();
|
|
}
|
|
|
|
function showReAssignRole(e) {
|
|
|
|
e.preventDefault();
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
|
|
$('#ReAssignApproverFromLabel').text(dataItem.FullName);
|
|
var issueID = $("#txtIssueID").val();
|
|
reAssignFromUserid = dataItem.UserID;
|
|
|
|
//if (dataItem.Status != 'Pending')
|
|
if (dataItem.Status.indexOf("Pending") < 0)
|
|
alert("Cannot ReAssign, because it is not in a Pending state");
|
|
else {
|
|
|
|
|
|
|
|
var searchText = ($("#txtSearch").val());
|
|
var url = "/LotTraveler/GetAllUsersList";
|
|
var source =
|
|
{
|
|
datatype: "json",
|
|
datafields: [
|
|
{ name: 'UserID' },
|
|
{ name: 'FullName' }
|
|
],
|
|
id: 'id',
|
|
url: url,
|
|
};
|
|
var dataAdapter = new $.jqx.dataAdapter(source);
|
|
// Create a jqxListBox
|
|
$("#lstReAssignApproval").jqxListBox({
|
|
multipleextended: false, theme: "arctic", source: dataAdapter, displayMember: "FullName", valueMember: "UserID", width: 200, height: 250
|
|
});
|
|
|
|
$("#ReAssignApproval").modal('show');
|
|
return false;
|
|
|
|
//alert(dataItem.FullName);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$('#ApproveDocument').on('click', function () {
|
|
$('#submitApprovalComments').attr("disabled", false);
|
|
|
|
$("#ApprovalComments").modal('show');
|
|
return false;
|
|
});
|
|
|
|
|
|
$('#submitApprovalComments').on('click', function () {
|
|
$('#submitApprovalComments').attr("disabled", true);
|
|
|
|
$.ajax({
|
|
url: "/LotTraveler/Approve",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: "@Model.ID",
|
|
currentStep: $("#currentStep").val(),
|
|
comments: $("#rejectComments").val(),
|
|
docType: docType
|
|
},
|
|
success: function (data) {
|
|
$("#ApprovalComments").modal('hide');
|
|
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#RejectDocument').on('click', function () {
|
|
// Save the document first if it was changed
|
|
$('#RejectDocument').attr("disabled", false);
|
|
$("#RejectComments").modal('show');
|
|
return false;
|
|
});
|
|
|
|
|
|
$('#submitRejectComments').on('click', function () {
|
|
$('#RejectDocument').attr("disabled", true);
|
|
|
|
|
|
$.ajax({
|
|
url: "/LotTraveler/Reject",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: "@Model.ID",
|
|
currentStep: $("#currentStep").val(),
|
|
comments: $("#rejectComments").val(),
|
|
documentType: docType
|
|
},
|
|
success: function (data) {
|
|
$("#RejectComments").modal('hide');
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', "@Model.ID");
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
|
|
|
|
});
|
|
});
|
|
|
|
|
|
// REGION REVISIONS
|
|
|
|
|
|
|
|
$("#GetRevision").on('click', function () {
|
|
|
|
var id = $("#Revisions").data("kendoDropDownList").value();
|
|
$.ajax({
|
|
url: "/LotTraveler/GetWorkRequestRevision",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: id
|
|
},
|
|
success: function (data) {
|
|
var url = '@Url.Action("Edit", "LotTraveler", new { issueID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', id);
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
})
|
|
|
|
|
|
var clearSourceLotsListBox = function () {
|
|
$('#lstLots').each(function () {
|
|
this.options.length = 0;
|
|
$(this)[0].options.length = 0;
|
|
});
|
|
}
|
|
|
|
|
|
$("#jqxButtonSearchParts").on('click', function displayLots() {
|
|
var searchText = ($("#txtSearch").val());
|
|
|
|
var url = "/LotTraveler/SearchParts";
|
|
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
searchText: searchText
|
|
},
|
|
success: function (data) {
|
|
|
|
|
|
clearSourceLotsListBox();
|
|
var tempdata;
|
|
var part;
|
|
var silicon;
|
|
var processFlow;
|
|
var description;
|
|
|
|
|
|
$.each(data, function (index, value) {
|
|
//alert(value);
|
|
tempdata = value.split('~');
|
|
part = tempdata[0];
|
|
silicon = tempdata[1];
|
|
processFlow = tempdata[2];
|
|
description = tempdata[3];
|
|
|
|
$('#lstParts').append($('<option>').text(part).val(value));
|
|
});
|
|
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
|
|
function OnMaterialDetailError(e, status) {
|
|
if (e.status == "customerror") {
|
|
alert(e.errors);
|
|
var grid = $("#MaterialList").data("kendoGrid");
|
|
grid.dataSource.read();
|
|
RefreshStartQtyData();
|
|
}
|
|
else {
|
|
alert("Generic server error.");
|
|
}
|
|
}
|
|
|
|
|
|
function OnHoldStepError(e, status) {
|
|
if (e.status == "customerror") {
|
|
alert(e.errors);
|
|
var grid = $("#HoldSteps").data("kendoGrid");
|
|
grid.dataSource.read();
|
|
}
|
|
else {
|
|
alert(e.errors);
|
|
}
|
|
}
|
|
|
|
|
|
function UploadAdditionalData(e) {
|
|
fileData = e;
|
|
var files = e.files;
|
|
$.each(files, function () {
|
|
|
|
if (!this.extension.toLowerCase().match(/^(.doc|.docx|.ppt|.pptx|.xls|.xlsx|.xlsm|.pdf|.gif|.jpeg|.jpg|.bmp|.png|.txt)$/)) {
|
|
alert("Only Word/PowerPoint/Excel/PDF/Image/Text files can be uploaded!")
|
|
e.preventDefault();
|
|
}
|
|
|
|
});
|
|
|
|
e.data = {
|
|
comments: $("#WRAttachmentComments").val(),
|
|
docType: $("#WRAttachDocType").data("kendoDropDownList").value()
|
|
|
|
};
|
|
}
|
|
|
|
$("#UploadWRAttachment").on('click', function (e) {
|
|
e.preventDefault();
|
|
$("#WinAttachDocuments").modal('show');
|
|
})
|
|
|
|
|
|
$(window).bind("beforeunload", function () {
|
|
//return confirm("Do you really want to close?");
|
|
$.ajax({
|
|
url: "/LotTraveler/ReleaseLockOnDocument",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: ("@Model.ID")
|
|
},
|
|
success: function () {
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
|
|
})
|
|
|
|
function changeNewLine(text) {
|
|
if (text != null) {
|
|
var regexp = new RegExp('\n', 'g');
|
|
return text.replace(regexp, '<br>');
|
|
}
|
|
else
|
|
return '';
|
|
}
|
|
|
|
|
|
|
|
function DownloadAttachment(e) {
|
|
e.preventDefault();
|
|
|
|
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
|
|
var fileGUID = dataItem.FileGUID;
|
|
var attachmentID = dataItem.AttachmentID;
|
|
|
|
window.location = '/LotTraveler/DownloadFile?fileGuid=' + fileGUID + '&swrNumber=' + "@Model.SWRNumber" + "&typeOfDoc=1";
|
|
|
|
}
|
|
|
|
|
|
@*function IdleTimeout() {
|
|
//window.location = logoutUrl;
|
|
var url = '@Url.Action("SpecialWorkRequest", "Home")';
|
|
window.location.href = url;
|
|
|
|
}*@
|
|
|
|
|
|
</script>
|