1965 lines
81 KiB
Plaintext
1965 lines
81 KiB
Plaintext
@model Fab2ApprovalSystem.Models.LTWorkRequest
|
|
@{
|
|
ViewBag.Title = "Work Request - ReadOnly";
|
|
}
|
|
|
|
@{
|
|
Layout = "_LotTravelerLayout.cshtml";
|
|
}
|
|
<link rel="stylesheet" href="/Content/kendo/kendo.blueopal.min.css" />
|
|
<style>
|
|
#loading-div-background {
|
|
display: none;
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
background: #9fc2e1;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
#loading-div {
|
|
width: 300px;
|
|
height: 150px;
|
|
background-color: #70b1eb;
|
|
border: 5px solid #1468b3;
|
|
text-align: center;
|
|
color: #202020;
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 50%;
|
|
margin-left: -150px;
|
|
margin-top: -100px;
|
|
-webkit-border-radius: 5px;
|
|
-moz-border-radius: 5px;
|
|
border-radius: 5px;
|
|
behavior: url("/css/pie/PIE.htc"); /* HANDLES IE */
|
|
}
|
|
|
|
table {
|
|
border-spacing: 2px;
|
|
padding: 3px;
|
|
border-color: white;
|
|
}
|
|
|
|
td {
|
|
border-color: white;
|
|
padding: 4px;
|
|
}
|
|
|
|
|
|
</style>
|
|
|
|
|
|
@using (Html.BeginForm())
|
|
{
|
|
<input type="hidden" id="LTWorkRequestID" value="@Model.ID" />
|
|
<input type="hidden" id="DefaultEPISiliconPartNumber" value="@Model.DefaultEPISiliconPartNumber" />
|
|
@Html.AntiForgeryToken()
|
|
|
|
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-sm-3">
|
|
|
|
</div>
|
|
<div class="col-sm-3">
|
|
|
|
</div>
|
|
<div class="col-sm-6">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<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>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<font style="color:crimson">
|
|
@if ((@Model.CurrentStep >= 0 && @Model.CurrentStep <= 2) || (@Model.CurrentStep == 3 && @Model.CloseDate == null))
|
|
{
|
|
if (Model.RecordLockByName == null)
|
|
{
|
|
<h4>
|
|
<font style="color:red">
|
|
Mode: [Readonly]
|
|
</font>
|
|
</h4>
|
|
}
|
|
else
|
|
{
|
|
<h4>
|
|
<font style="color:red">
|
|
Mode: [Readonly] - Locked for Editing by <font style="color: green; font-weight:bold; font-style:italic">@Model.RecordLockByName</font>
|
|
</font>
|
|
</h4>
|
|
|
|
}
|
|
}
|
|
</font>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<input type="button" value="Print PDF" class="btn btn-warning btn-xs" id="PrintWorkRequestPDF" style="font-size: 10px;" />
|
|
|
|
<label class="control-label">Revisions:</label>
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("Revisions")
|
|
.BindTo(new SelectList(ViewBag.WorkReqRevisionList, "ID", "RevisionNumber"))
|
|
.OptionLabel("Select")
|
|
)
|
|
<input type="button" value="Display" class="btn btn-warning btn-xs" id="GetRevision" />
|
|
|
|
<input type="button" value="Approval Log History" class="btn btn-warning btn-xs" id="ApprovalLogHistoryData" />
|
|
|
|
<input type="button" value="Revision History" class="btn btn-warning btn-xs" id="RevisionHistoryData" />
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color:crimson; font-weight:bold">
|
|
Section1: Work Request <font style="color:green; font-weight:bold"> [SWR #:@Model.SWRNumber] [Title:@Model.Title] [Orginator:@Model.OriginatorName] </font>
|
|
</font>
|
|
<a class="btn btn-xs pull-right alert-danger" id="aSection1" role="button" data-toggle="collapse" href="#collapseSection1" aria-expanded="false" aria-controls="collapseSection1">
|
|
Expand
|
|
</a>
|
|
|
|
</h5>
|
|
|
|
</div>
|
|
<div class="collapse" id="collapseSection1">
|
|
<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", Readonly = "Readonly", 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 (Session[GlobalVars.IS_ADMIN] != null)
|
|
{
|
|
<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)
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
.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()
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
.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")
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
.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"
|
|
}
|
|
}
|
|
)
|
|
|
|
)
|
|
|
|
</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", Readonly = "Readonly" })
|
|
</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")
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
.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")
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
.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")
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
.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%", Readonly = "Readonly" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel panel-default" style="font-size: 10px" id="Sec1A">
|
|
<!-- NEW PANEL ===============================================================-->
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color: crimson; font-weight: bold">
|
|
Section1-A: Engineering Wafer Lot Start
|
|
</font>
|
|
<a class="btn btn-xs pull-right alert-danger" id="aSection1A" role="button" data-toggle="collapse" href="#collapseSection1A" aria-expanded="false" aria-controls="collapseSection1A">
|
|
Expand
|
|
</a>
|
|
</h5>
|
|
</div>
|
|
|
|
<div class="collapse" id="collapseSection1A">
|
|
<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")
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
)
|
|
</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")
|
|
.HtmlAttributes(new { Readonly = "Readonly" })
|
|
)
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-2">
|
|
<div class="col-sm-5">
|
|
<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", Readonly = "Readonly" })
|
|
</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.TextBoxFor(model => model.AllocationToUse, new { id = "txtAllocationToUse", @class = "k-textbox", Readonly = "Readonly" })
|
|
</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", Readonly = "Readonly" })
|
|
</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>
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
@(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.EPISiliconPartNumber).Width("50px");
|
|
columns.Bound(a => a.Quantity).Width("50px");
|
|
columns.Bound(a => a.Supplier).Width("50px");
|
|
columns.Bound(a => a.Source).Width("50px");
|
|
})
|
|
.Resizable(e => e.Columns(true))
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Events(e => e.Change("RefreshStartQtyData").RequestStart("CheckWIPPartNumber"))
|
|
.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 }))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<table class="table-condensed" style="width:100%">
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top" width="50%">
|
|
<table border="1" width="100%" height="100%" style="font-size:9px">
|
|
<tr style="background-color: lightgray; font-weight:bold; font-size:11px">
|
|
<td colspan="7" bgcolor="e5e0e0">
|
|
Lot Start Check List
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="e5e0e0" width="25%">
|
|
OnHand/Existing
|
|
</td>
|
|
<td width="25%">
|
|
Silicon
|
|
@Html.EditorFor(model => model.SiliconOnHand)
|
|
</td>
|
|
<td width="25%">
|
|
Reticle Set
|
|
@Html.EditorFor(model => model.ReticleOnHand)
|
|
</td>
|
|
<td width="25%">
|
|
SPN transfer
|
|
@Html.EditorFor(model => model.SPNTransferOnHand)
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="e5e0e0" width="25%"></td>
|
|
<td width="25%">
|
|
Probe Card
|
|
@Html.EditorFor(model => model.ProbeCardOnHand)
|
|
</td>
|
|
<td width="25%">
|
|
Probe Recipe
|
|
@Html.EditorFor(model => model.ProbeRecipeOnHand)
|
|
</td>
|
|
<td width="25%">
|
|
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, 14, 100, new { id = "txtLotStartCheckListComments", @class = "k-textbox", style = "font-size: 11px; width: 100%", ReadOnly = "ReadOnly" })
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td valign="top" width="50%">
|
|
<table border="1" width="100%" height="100%" style="border-color:lightgrey; font-size:9px">
|
|
<tr style="background-color: lightgray; font-weight:bold; font-size:11px">
|
|
<td colspan="4" bgcolor="e5e0e0">
|
|
Lot Start in SPN
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#e5e0e0" width="15%">
|
|
SIGNON
|
|
</td>
|
|
<td width="30%">
|
|
SURP
|
|
</td>
|
|
<td bgcolor="#e5e0e0" width="15%">
|
|
WIP AREA
|
|
</td>
|
|
<td width="30%">
|
|
@Model.WIPArea
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#e5e0e0">
|
|
VERB
|
|
</td>
|
|
<td>
|
|
START
|
|
</td>
|
|
<td bgcolor="#e5e0e0">
|
|
Start Date
|
|
</td>
|
|
<td>
|
|
@Model.PlannedLotStartDate
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#e5e0e0">
|
|
WIP Lot#
|
|
</td>
|
|
<td>
|
|
@Model.LotNumber
|
|
</td>
|
|
<td bgcolor="#e5e0e0">
|
|
WIP PN#
|
|
</td>
|
|
<td>
|
|
@Model.WIPPartNumber - @Model.PartDescription
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#e5e0e0">
|
|
Type
|
|
</td>
|
|
<td>
|
|
@Model.LotType
|
|
</td>
|
|
<td bgcolor="#e5e0e0">
|
|
Process Flow
|
|
</td>
|
|
<td>
|
|
@Model.ProcessFlow
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#e5e0e0">
|
|
Start Qty
|
|
</td>
|
|
<td>
|
|
@Model.StartQty
|
|
</td>
|
|
<td bgcolor="#e5e0e0">
|
|
Qual Lot
|
|
</td>
|
|
<td>
|
|
@(Model.QualLot == 1 ? "Y" : "")
|
|
</td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#e5e0e0">
|
|
VERB
|
|
</td>
|
|
<td bgcolor="#e5e0e0">
|
|
COMMENT
|
|
</td>
|
|
<td colspan="2">
|
|
@Html.TextAreaFor(model => model.VerbComment, 3, 100, new { id = "txtVerbComment", @class = "k-textbox", style = "font-size: 11px; width: 100%", ReadOnly = "ReadOnly" })
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="e5e0e0" colspan="3">
|
|
Record Silicon Lot #s in SPN and tape tags to Traveler
|
|
</td>
|
|
<td>
|
|
@(Model.RecordSiliconLotInSPNTapeTagTotrav == 1 ? "Yes" : "No")
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="2" bgcolor="e5e0e0">
|
|
Silicon Lot#s: Cassette 1
|
|
</td>
|
|
<td colspan="2">
|
|
@Html.TextAreaFor(model => model.SiliconLotNoCassette1, 3, 100, new { id = "txtSiliconLotNoCassette1", @class = "k-textbox", style = "font-size: 11px; width: 100%", ReadOnly = "ReadOnly" })
|
|
</td>
|
|
</tr>
|
|
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
<div class="row">
|
|
<div class="col-sm-12" >
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel-body bg-warning">
|
|
|
|
</div>
|
|
</div>
|
|
/**/
|
|
if (Model.LotCount == 0)
|
|
{
|
|
<div class="panel panel-default" style="font-size: 10px" id="Sec2">
|
|
<!-- NEW PANEL ===============================================================-->
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color:crimson; font-weight:bold">
|
|
Section2: OLHOLD and Engineering Deviation Specified by Originator
|
|
</font>
|
|
<a class="btn btn-xs pull-right alert-danger" id="aSection2" role="button" data-toggle="collapse" href="#collapseSection2" aria-expanded="false" aria-controls="collapseExample">
|
|
|
|
Expand
|
|
</a>
|
|
|
|
</h5>
|
|
</div>
|
|
|
|
<div class="collapse" id="collapseSection2">
|
|
|
|
|
|
<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("50px");
|
|
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");
|
|
})
|
|
.Resizable(e => e.Columns(true))
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:350px; width:100%; font-size: 8px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ID);
|
|
})
|
|
.PageSize(40)
|
|
.Read(read => read.Action("GetHoldSteps", "LotTraveler", new { workRequestID = Model.ID }))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
)
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
}
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color:crimson; font-weight:bold">
|
|
Section3: Document Attachment
|
|
</font>
|
|
<a class="btn btn-xs pull-right alert-danger" id="aSection3" role="button" data-toggle="collapse" href="#collapseSection3" aria-expanded="false" aria-controls="collapseExample">
|
|
Expand
|
|
</a>
|
|
</h5>
|
|
</div>
|
|
<div class="collapse" id="collapseSection3">
|
|
|
|
<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 class="panel-body bg-warning">
|
|
@(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.Custom("View").Click("DownloadAttachment")).Width("100px");
|
|
})
|
|
.Resizable(e => e.Columns(true))
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
//.Batch(false)
|
|
.ServerOperation(false)
|
|
.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 }))
|
|
)
|
|
)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color:crimson; font-weight:bold">
|
|
Section4: Approvals
|
|
</font>
|
|
<a class="btn btn-xs pull-right alert-danger" id="aSection4" role="button" data-toggle="collapse" href="#collapseSection4" aria-expanded="false" aria-controls="collapseExample">
|
|
Expand
|
|
</a>
|
|
|
|
</h5>
|
|
</div>
|
|
<div class="collapse" id="collapseSection4">
|
|
|
|
|
|
<div class="panel-body bg-warning">
|
|
|
|
@(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 = "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>
|
|
</div>
|
|
if (@Model.CloseDate != null)
|
|
{
|
|
<div class="panel panel-default" style="font-size: 10px">
|
|
<div class="panel-body bg-info">
|
|
<h5>
|
|
<font style="color:crimson; font-weight:bold">
|
|
Section5: Lot
|
|
</font>
|
|
<a class="btn btn-xs pull-right alert-danger" id="aSection5" role="button" data-toggle="collapse" href="#collapseSection5" aria-expanded="false" aria-controls="collapseExample">
|
|
Collapse
|
|
</a>
|
|
|
|
</h5>
|
|
</div>
|
|
<div class="collapse" id="collapseSection5">
|
|
<div class="panel-heading">
|
|
<table cellspacing="50" cellpadding="50" border="0" width="100%">
|
|
<tr>
|
|
<td width="10%">
|
|
<ul>
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown" style="font-size: 12px">Lot Options<b class="caret"></b></a>
|
|
<ul class="dropdown-menu" style="font-size: 11px">
|
|
<li><a href="#" id="showLotSearchFormButton">Search Lots</a></li>
|
|
@*<li><a href="#" id="lotAddFormButton">Add Lot</a></li>*@
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
|
|
|
|
|
|
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="panel-body bg-warning">
|
|
<div class="col-sm-offset-0">
|
|
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.LTLot>()
|
|
.Name("Lots")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.ID).Visible(false);
|
|
columns.Bound(a => a.WorkRequestID).Visible(false);
|
|
columns.Bound(a => a.LotNumber).Width("50px"); ;
|
|
columns.Bound(a => a.WIPPartNumber).Width("50px"); ;
|
|
columns.Bound(a => a.WaferQty).Width("50px"); ;
|
|
columns.Bound(a => a.PartDescription).Width("150px"); ;
|
|
columns.Bound(a => a.Process).Width("50px"); ;
|
|
columns.Bound(a => a.Location).Width("50px"); ;
|
|
columns.Bound(a => a.Operation).Width("50px"); ;
|
|
columns.Bound(a => a.LotStatus).Width("25px"); ;
|
|
columns.Bound(a => a.LotTravelerCurrentRevision).Width("50px");
|
|
columns.Bound(a => a.TravelerStatus).Width("50px");
|
|
columns.Bound(a => a.UploadedByName).Width("50px");
|
|
columns.Bound(a => a.ID).Template(@<text> @Html.ActionLink(@item.LotNumber.ToString(), null)</text>)
|
|
.ClientTemplate("<a href='http://" + GlobalVars.WSR_URL + "/user/wsr2/wsr_lot.php?lot=#=LotNumber#' target='_blank'>View</a>").Title("History").Width("50px");
|
|
|
|
columns.Bound(p => p.ButtonAttrib).ClientTemplate("#=buildViewButtons(ButtonAttrib)#").Width("50px").Title("");
|
|
columns.Bound(p => p.ButtonAttrib).ClientTemplate("#=buildUpdateCreateButtons(ButtonAttrib)#").Width("50px").Title("");
|
|
columns.Bound(p => p.ButtonAttrib).ClientTemplate("#=buildUpdateDeleteExecuteButtons(ButtonAttrib)#").Width("50px").Title("");
|
|
|
|
|
|
})
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "height:200px; width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
//.Batch(false)
|
|
.ServerOperation(false)
|
|
.Events( e => e.Change("LotAdd_AfterChange"))
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ID);
|
|
})
|
|
.PageSize(20)
|
|
.Read(read => read.Action("GetLotList", "LotTraveler", new { workRequestID = Model.ID}))
|
|
)
|
|
.Resizable(resize => resize.Columns(true))
|
|
|
|
)
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
}
|
|
|
|
<div class="modal fade" id="LotSearchForm" tabindex="0" 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">Lot Search</h4>
|
|
</div>
|
|
|
|
<div class="modal-body ">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="controls">
|
|
<label for="Category">Search By:</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<div id="example" class="k-content">
|
|
@(Html.Kendo().DropDownList()
|
|
.Name("LotCriteria")
|
|
.DataTextField("Text")
|
|
.DataValueField("Value")
|
|
//.Events(e => e.Change("change"))
|
|
.BindTo(new List<SelectListItem>() {
|
|
new SelectListItem() {
|
|
Text = "Lot/DieLotNumber",
|
|
Value = "LotNo"
|
|
},
|
|
new SelectListItem() {
|
|
Text = "Location",
|
|
Value = "Location"
|
|
}
|
|
//,new SelectListItem() {
|
|
// Text = "Gen",
|
|
// Value = "Gen"
|
|
//}
|
|
})
|
|
.Value("1")
|
|
)
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
@Html.TextBox("txtSearch", null, new { @class = "k-textbox" })
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-4">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<input style="margin-top: 5px;" type="button" id='jqxButtonSearchLots' value="Search Lots" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<br />
|
|
<div class="row">
|
|
<div class="col-sm-5">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<select multiple id="lstLots" style="height: 250px; width: 200px; font-family: Tahoma; border-color: lightgrey" class="jqx-combobox-multi-item"></select>
|
|
<div>
|
|
<input style="margin-top: 20px;" type="button" id='jqxButtonAddLots' value="Add Lots" />
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-7">
|
|
<div class="control-group">
|
|
<div class="controls">
|
|
<div id='lstSelectedLots' style="height:250px; width:200px; font-family:Tahoma; border-color:lightgrey">
|
|
|
|
</div>
|
|
<div>
|
|
<input style="margin-top: 20px;" type="button" id='jqxButtonRemoveLots' value="Remove Lots" />
|
|
</div>
|
|
</div>
|
|
</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="submitSelectLot">Save changes</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="ApprovalLogHistoryWin" 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">
|
|
<h4 class="modal-title" id="myModalLabel">Approval Log History</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.ApprovalLogHistory>()
|
|
.Name("ApprovalLogHistory")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.ApprovalLogID).Visible(false);
|
|
columns.Bound(a => a.FullName);
|
|
columns.Bound(a => a.SubRole);
|
|
columns.Bound(a => a.Operation);
|
|
columns.Bound(a => a.OperationTime).Format("{0:MM/dd/yy hh:mm:ss}");
|
|
|
|
})
|
|
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ApprovalLogID);
|
|
})
|
|
.PageSize(50)
|
|
.Read(read => read.Action("ApprovalLogHistory_Read", "LotTraveler", new { swrNUmber = Model.SWRNumber }))
|
|
)
|
|
)
|
|
</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="RevisionHistoryWin" 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">
|
|
<h4 class="modal-title" id="myModalLabel">Revision History</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
@(Html.Kendo().Grid<Fab2ApprovalSystem.Models.RevisionHistory>()
|
|
.Name("RevisionHistory")
|
|
.Columns(columns =>
|
|
{
|
|
columns.Bound(a => a.ID).Visible(false);
|
|
columns.Bound(a => a.RevisionedBy);
|
|
columns.Bound(a => a.Comments);
|
|
columns.Bound(a => a.RevisionCreateDate).Format("{0:MM/dd/yy hh:mm:ss}");
|
|
|
|
})
|
|
|
|
.Sortable()
|
|
.Scrollable()
|
|
.HtmlAttributes(new { style = "width:100%; font-size: 10px" })
|
|
.DataSource(dataSource => dataSource
|
|
.Ajax()
|
|
.ServerOperation(false)
|
|
.Model(model =>
|
|
{
|
|
model.Id(p => p.ID);
|
|
})
|
|
.PageSize(50)
|
|
.Read(read => read.Action("GetWorkRequestRevisionHistory", "LotTraveler", new { swrNUmber = Model.SWRNumber }))
|
|
)
|
|
)
|
|
</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="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-12">
|
|
<label for="WRAttachmentComments">Comments:</label>
|
|
<textarea class="form-control" rows="3" id="WRAttachmentComments"></textarea>
|
|
</div>
|
|
</div>
|
|
<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>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="loading-div-background">
|
|
<div id="loading-div" class="ui-corner-all">
|
|
<img style="height:30px;margin:30px;" src="~/Content/Images/Loading.gif" alt="Creating Traveler, Please Wait...." />
|
|
<h4 style="color:crimson;font-weight:bold;">Creating Traveler, Please Wait....</h4>
|
|
</div>
|
|
</div>
|
|
|
|
@*<div class="modal fade modal-vertical-centered" id="loading-div-background" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
|
|
<div class="modal-dialog" style="width: 200px; height: 200px">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h4 style="color:crimson;font-weight:bold;">Creating Traveler, Please Wait....</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<img style="height:30px;margin:30px;" src="~/Content/Images/Loading.gif" alt="Creating Traveler, Please Wait...." />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>*@
|
|
|
|
@Html.Partial("_LTReassignOriginator")
|
|
|
|
<script type="text/javascript">
|
|
var holdStepFunction = ""
|
|
var holdStepID;
|
|
var docType = 6;
|
|
var partNumberDropDownCreated = 0;
|
|
|
|
$(document).ready(function () {
|
|
|
|
|
|
$('#collapseSection5').collapse({
|
|
toggle: true
|
|
})
|
|
|
|
displayEmptySelectedLotsList();
|
|
$("#loading-div-background").css({ opacity: 0.8 });
|
|
|
|
|
|
$("#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();
|
|
}
|
|
});
|
|
|
|
})
|
|
|
|
|
|
$("#aSection1").on('click', function () {
|
|
var element = document.getElementById("aSection1");
|
|
if (element.innerHTML.trim() == "Collapse")
|
|
element.innerHTML = "Expand";
|
|
else
|
|
element.innerHTML = "Collapse";
|
|
})
|
|
|
|
|
|
$("#aSection1A").on('click', function () {
|
|
var element = document.getElementById("aSection1A");
|
|
if (element.innerHTML.trim() == "Collapse")
|
|
element.innerHTML = "Expand";
|
|
else
|
|
element.innerHTML = "Collapse";
|
|
})
|
|
|
|
|
|
$("#aSection2").on('click', function () {
|
|
var element = document.getElementById("aSection2");
|
|
if (element.innerHTML.trim() == "Collapse")
|
|
element.innerHTML = "Expand";
|
|
else
|
|
element.innerHTML = "Collapse";
|
|
})
|
|
|
|
|
|
$("#aSection3").on('click', function () {
|
|
var element = document.getElementById("aSection3");
|
|
if (element.innerHTML.trim() == "Collapse")
|
|
element.innerHTML = "Expand";
|
|
else
|
|
element.innerHTML = "Collapse";
|
|
})
|
|
|
|
$("#aSection4").on('click', function () {
|
|
var element = document.getElementById("aSection4");
|
|
if (element.innerHTML.trim() == "Collapse")
|
|
element.innerHTML = "Expand";
|
|
else
|
|
element.innerHTML = "Collapse";
|
|
})
|
|
|
|
$("#aSection5").on('click', function () {
|
|
var element = document.getElementById("aSection5");
|
|
if (element.innerHTML.trim() == "Collapse")
|
|
element.innerHTML = "Expand";
|
|
else
|
|
element.innerHTML = "Collapse";
|
|
})
|
|
|
|
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);
|
|
}
|
|
|
|
$("#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);
|
|
}
|
|
});
|
|
})
|
|
|
|
function CheckWIPPartNumber(e) {
|
|
//if ($("#txtWIPPartNumber").val().length == 0) {
|
|
// alert("Please enter the WIP PartNumber before adding a hold step");
|
|
// return false;
|
|
//}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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='@GlobalVars.AttachmentUrl" + "LotTraveler/" + swrNumber + "/" + fileGuid + "." + fileExtension + "'>" + fileName + "</a><BR>" + " ";
|
|
template += "<a href='/LotTraveler/DownloadFile?fileGuid=" + fileGuid + "&swrNumber=" + @Model.SWRNumber + "&typeOfDoc=1" + "'>" + fileName + "</a><BR>" + " ";
|
|
|
|
}
|
|
|
|
}
|
|
return template;
|
|
}
|
|
|
|
|
|
|
|
$("#showLotSearchFormButton").on('click', function () {
|
|
|
|
//$("#lstSearchedLots").jqxListBox('clear');
|
|
clearSourceLotsListBox();
|
|
$("#lstSelectedLots").jqxListBox('clear');
|
|
$('#txtSearch').val('');
|
|
$("#LotSearchForm").modal('show');
|
|
return false;
|
|
})
|
|
|
|
var clearSourceLotsListBox = function () {
|
|
$('#lstLots').each(function () {
|
|
this.options.length = 0;
|
|
$(this)[0].options.length = 0;
|
|
});
|
|
}
|
|
|
|
$("#jqxButtonSearchLots").on('click', function displayLots() {
|
|
var searchText = ($("#txtSearch").val());
|
|
var searchBy = $("#LotCriteria").data("kendoDropDownList").value();
|
|
var url = "/LotTraveler/SearchLots";
|
|
|
|
$.ajax({
|
|
url: url,
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
searchText: searchText,
|
|
searchBy: searchBy
|
|
},
|
|
success: function (data) {
|
|
|
|
|
|
clearSourceLotsListBox();
|
|
$.each(data, function (index, value) {
|
|
$('#lstLots').append($('<option>').text(value).val(index));
|
|
});
|
|
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
$("#submitSelectLot").on('click', function () {
|
|
|
|
|
|
|
|
var lots;
|
|
var templot;
|
|
var currLot = "@Model.LotNumber";
|
|
var invalidLot = false;
|
|
var items = $("#lstSelectedLots").jqxListBox('getItems');
|
|
if (items != undefined) {
|
|
for (var x = 0; x < items.length; x++) {
|
|
//check if the selected lot number is a child of the Mother Lot
|
|
|
|
|
|
templot = items[x].value;
|
|
//alert(templot.substring(0, 7) + ' - ' + currLot.substring(0, 7));
|
|
if (templot.substring(0, 7) != currLot.substring(0, 7)) {
|
|
invalidLot = true;
|
|
}
|
|
else {
|
|
|
|
if (lots == undefined)
|
|
lots = templot;
|
|
else
|
|
lots += "~" + templot;
|
|
}
|
|
};
|
|
|
|
if (invalidLot)
|
|
{
|
|
alert("Some or All of the selected lots did not belong to the Mother lot, hence were not added")
|
|
}
|
|
|
|
if (lots != undefined) {
|
|
$.ajax({
|
|
url: "/LotTraveler/AddLots",
|
|
type: "GET",
|
|
datatype: "json",
|
|
data: {
|
|
workRequestID: '@Model.ID',
|
|
lotNumbers: lots
|
|
},
|
|
success: function (data) {
|
|
if (data.LotList != null) {
|
|
alert('The following Lot Numbers ' + data.LotList + ' cannot be added as they are already present in the list');
|
|
}
|
|
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read('@Model.ID');
|
|
|
|
$("#LotSearchForm").modal('hide');
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
}
|
|
else
|
|
$("#LotSearchForm").modal('hide');
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
});
|
|
|
|
function displayEmptySelectedLotsList() {
|
|
var source =
|
|
{
|
|
datatype: "json",
|
|
datafields: [
|
|
{ name: 'LotNo' }
|
|
],
|
|
id: 'id'
|
|
};
|
|
var dataAdapter = new $.jqx.dataAdapter(source);
|
|
// Create a jqxListBox
|
|
$("#lstSelectedLots").jqxListBox({
|
|
multipleextended: true, theme: "arctic", source: dataAdapter, displayMember: "LotNo", valueMember: "LotNo", width: 200, height: 250
|
|
});
|
|
}
|
|
|
|
|
|
$('#jqxButtonAddLots').on('click', function () {
|
|
// get selected items.
|
|
var bfound = false;
|
|
var lots;
|
|
var selected = $('#lstLots option:selected');
|
|
var selectedIndices = []; // create an empty array
|
|
$.each($('#lstLots option:selected'), function (index, value) { // loop over each option
|
|
//selectedIndices.push(index); // add the index to the array
|
|
//alert(value.text);
|
|
var tempvalue = value.text;
|
|
var templabel = value.text;
|
|
|
|
var itemsAdded = $("#lstSelectedLots").jqxListBox('getItems');
|
|
if (itemsAdded != undefined) {
|
|
for (var x = 0; x < itemsAdded.length; x++) {
|
|
if (itemsAdded[x].label == templabel) {
|
|
bfound = true;
|
|
break;
|
|
};
|
|
};
|
|
|
|
if (!bfound) {
|
|
$("#lstSelectedLots").jqxListBox('addItem', { label: tempvalue, value: tempvalue });
|
|
if (lots == null)
|
|
lots = tempvalue;
|
|
else
|
|
lots += "~" + tempvalue;
|
|
}
|
|
|
|
bfound = false;
|
|
}
|
|
else {
|
|
|
|
$("#lstSelectedLots").jqxListBox('addItem', { label: tempvalue, value: tempvalue });
|
|
}
|
|
|
|
});
|
|
|
|
|
|
});
|
|
|
|
$('#jqxButtonRemoveLots').on('click', function () {
|
|
// get items.
|
|
var userids;
|
|
var items = $("#lstSelectedLots").jqxListBox('getSelectedItems');
|
|
if (items != undefined) {
|
|
for (var i = items.length - 1; i >= 0; i--) {
|
|
$("#lstSelectedLots").jqxListBox('removeItem', items[i].value);
|
|
};
|
|
|
|
}
|
|
|
|
});
|
|
|
|
function RefreshWorkReqAttachmentsGrid() {
|
|
var grid = $("#WorkRequestAttachments").data("kendoGrid");
|
|
grid.dataSource.read($("@Model.ID").val());
|
|
|
|
//RefreshHoldStepGrid();
|
|
}
|
|
|
|
|
|
function buildUpdateCreateButtons(data) {
|
|
//alert(approvalid + ' ');
|
|
var ltLotID;
|
|
var workRequestID;
|
|
var travelerGenerated;
|
|
var status;
|
|
|
|
var temp = data.split('~');
|
|
travelerGenerated = temp[0];
|
|
ltLotID = temp[1];
|
|
workRequestID = temp[2];
|
|
status = temp[3];
|
|
travelerstatus = temp[4];
|
|
|
|
|
|
var template = "";
|
|
|
|
//if (travelerstatus == 'Closed')
|
|
//{
|
|
// template += '<input type="button" value="View Traveler" class="btn btn-warning btn-xs" id="ViewTravlerID" onclick="ViewTraveler(\'' + ltLotID + '\')" style="font-size: 10px;"/>';
|
|
//}
|
|
//else if (travelerGenerated == 'True') {
|
|
if (travelerGenerated == 'True') {
|
|
if (travelerstatus != 'Closed')
|
|
template += '<input type="button" value="Update Traveler" class="btn btn-warning btn-xs" id="UpdateTravlerID" onclick="DisplayLotTravlerForUpdate(\'' + ltLotID + '\')" style="font-size: 10px;"/>';
|
|
|
|
}
|
|
else {
|
|
template += '<input type="button" value="Create Traveler" class="btn btn-warning btn-xs" id="CreateTravelerID" onclick="CreateTraveler(\'' + ltLotID + '\', \'' + workRequestID + '\', \'' + status + '\')" style="font-size: 10px"/>';
|
|
}
|
|
//alert(template);
|
|
return template;
|
|
}
|
|
|
|
|
|
function buildUpdateDeleteExecuteButtons(data) {
|
|
//alert(approvalid + ' ');
|
|
var ltLotID;
|
|
var workRequestID;
|
|
var travelerGenerated;
|
|
|
|
var temp = data.split('~');
|
|
travelerGenerated = temp[0];
|
|
ltLotID = temp[1];
|
|
workRequestID = temp[2];
|
|
travelerstatus = temp[4];
|
|
|
|
var template = "";
|
|
|
|
if (travelerstatus == 'Closed') {
|
|
template += '';
|
|
}
|
|
else if (travelerGenerated == 'True') {
|
|
template += '<input type="button" value="Execute Traveler" class="btn btn-warning btn-xs" id="ExecTravelerID" onclick="DisplayLotTravlerForExecute(\'' + ltLotID + '\')" style="font-size: 10px"/>';
|
|
}
|
|
else {
|
|
template += '<input type="button" value="Delete Lot" class="btn btn-warning btn-xs" id="DeleteLotID" onclick="DeleteLot(\'' + ltLotID + '\')" style="font-size: 10px"/>';
|
|
}
|
|
|
|
return template;
|
|
}
|
|
|
|
function buildViewButtons(data)
|
|
{
|
|
var ltLotID;
|
|
var workRequestID;
|
|
var travelerGenerated;
|
|
var status;
|
|
|
|
var temp = data.split('~');
|
|
travelerGenerated = temp[0];
|
|
ltLotID = temp[1].trim();
|
|
workRequestID = temp[2];
|
|
status = temp[3];
|
|
travelerstatus = temp[4];
|
|
|
|
|
|
var template = "";
|
|
if (travelerGenerated == 'True') {
|
|
template += '<input type="button" value="View Traveler" class="btn btn-warning btn-xs" id="ViewTravlerID" onclick="ViewTraveler(\'' + ltLotID + '\')" style="font-size: 10px;"/>';
|
|
}
|
|
|
|
return template;
|
|
}
|
|
|
|
function ViewTraveler(ltLotID)
|
|
{
|
|
var url = "@Html.Raw(@Url.Action("LotTravelerReadonly", "LotTraveler", new { ltLotID = "__id__", revisionNumber = "-1" }))";
|
|
//url = url.replace('amp;', '');
|
|
|
|
window.location.href = url.replace('__id__', ltLotID);
|
|
}
|
|
|
|
|
|
function DisplayLotTravlerForUpdate(ltLotID) {
|
|
|
|
|
|
|
|
$.ajax({
|
|
url: "/LotTraveler/DisplayLotTraveler",
|
|
type: "GET",
|
|
datatype: "json",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: {
|
|
ltLotID: ltLotID
|
|
},
|
|
success: function (data) {
|
|
if (data == 'Update') {
|
|
var url = '@Url.Action("LotTravelerUpdate", "LotTraveler", new { ltLotID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', ltLotID);
|
|
}
|
|
else {
|
|
|
|
var url = '@Url.Action("LotTravelerReadonly", "LotTraveler", new { ltLotID = "__id__", revisionNumber = "__revID__" })';
|
|
var temp = data.split('~');
|
|
|
|
url = url.replace('__revID__', temp[1])
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', ltLotID);
|
|
}
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DisplayLotTravlerForExecute(ltLotID) {
|
|
|
|
@*var url = '@Url.Action("LotTravelerExecute", "LotTraveler", new { ltLotID = "__id__" })';
|
|
window.location.href = url.replace('__id__', ltLotID);*@
|
|
|
|
|
|
$.ajax({
|
|
url: "/LotTraveler/DisplayLotTravelerForExecute",
|
|
type: "GET",
|
|
datatype: "json",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: {
|
|
ltLotID: ltLotID
|
|
},
|
|
success: function (data) {
|
|
if (data == 'Execute') {
|
|
var url = '@Url.Action("LotTravelerExecute", "LotTraveler", new { ltLotID = "__id__" })';
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', ltLotID);
|
|
}
|
|
else {
|
|
|
|
var url = '@Url.Action("LotTravelerReadonly", "LotTraveler", new { ltLotID = "__id__", revisionNumber = "__revID__" })';
|
|
var temp = data.split('~');
|
|
|
|
url = url.replace('__revID__', temp[1])
|
|
url = url.replace('amp;', '');
|
|
window.location.href = url.replace('__id__', ltLotID);
|
|
}
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
function CreateTraveler(ltLotID, workRequestID, status) {
|
|
status = $.trim(status)
|
|
if (status == 'C')
|
|
{
|
|
alert('Cannot create a Traveler for Closed Lots')
|
|
return false;
|
|
}
|
|
|
|
if (status == 'Z') {
|
|
alert('Cannot create a Traveler for Zero Wafers Lots')
|
|
return false;
|
|
}
|
|
|
|
if (confirm('Are you sure you want to create a Lot Traveler for this lot')) {
|
|
|
|
//TODO display a processing window
|
|
$("#loading-div-background").show()
|
|
//$("#loading-div-background").modal('show')
|
|
$.ajax({
|
|
url: "/LotTraveler/CreateTaveler",
|
|
type: "GET",
|
|
datatype: "json",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: {
|
|
ltLotID: ltLotID,
|
|
workRequestID: workRequestID
|
|
},
|
|
success: function (data) {
|
|
$("#loading-div-background").hide();
|
|
//$("#loading-div-background").modal('hide')
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read('@Model.ID');
|
|
|
|
alert("Lot Traveler Created!")
|
|
|
|
},
|
|
error: function (result) {
|
|
$("#loading-div-background").hide();
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
function DeleteLot(ltLotID) {
|
|
if (confirm("Are you sure you want to proceed with the DELETE operation")) {
|
|
$.ajax({
|
|
url: "/LotTraveler/DeleteLot",
|
|
type: "GET",
|
|
datatype: "json",
|
|
contentType: "application/json; charset=utf-8",
|
|
data: {
|
|
ltLotID: ltLotID
|
|
},
|
|
success: function () {
|
|
|
|
var grid = $("#Lots").data("kendoGrid");
|
|
grid.dataSource.read('@Model.ID');
|
|
|
|
alert("Lot Deleted")
|
|
|
|
},
|
|
error: function (result) {
|
|
alert("Failed " + result);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
$('#ApprovalLogHistoryData').on('click', function (e) {
|
|
e.preventDefault();
|
|
$("#ApprovalLogHistoryWin").modal('show');
|
|
return false;
|
|
})
|
|
|
|
$('#RevisionHistoryData').on('click', function (e) {
|
|
|
|
e.preventDefault();
|
|
$("#RevisionHistoryWin").modal('show');
|
|
return false;
|
|
})
|
|
|
|
|
|
$("#PrintWorkRequestPDF").on('click', function (e) {
|
|
e.preventDefault();
|
|
var url = '@Url.Action("DisplayWorkRequestPDF", "LotTraveler", new { workRequestID = "__id__" })';
|
|
window.open(url.replace('__id__', '@Model.ID', '_blank'));
|
|
})
|
|
|
|
|
|
|
|
|
|
$("#UploadWRAttachment").on('click', function (e) {
|
|
e.preventDefault();
|
|
$("#WinAttachDocuments").modal('show');
|
|
})
|
|
|
|
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()
|
|
|
|
};
|
|
}
|
|
|
|
|
|
function changeNewLine(text) {
|
|
if (text != null) {
|
|
var regexp = new RegExp('\n', 'g');
|
|
return text.replace(regexp, '<br>');
|
|
}
|
|
else
|
|
return '';
|
|
}
|
|
|
|
function LotAdd_AfterChange()
|
|
{
|
|
var vgrid = $("#Lots").data("kendoGrid");
|
|
var items = vgrid.dataSource.data();
|
|
var element = document.getElementById("aSection1");
|
|
|
|
if (items.length > 0) {
|
|
$('#Sec2').hide();
|
|
$('#Sec1A').hide();
|
|
element.innerHTML = "Expand";
|
|
}
|
|
else {
|
|
$('#Sec2').show();
|
|
$('#Sec1A').show();
|
|
$('#collapseSection1').collapse({
|
|
toggle: true
|
|
})
|
|
element.innerHTML = "Collapse";
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
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";
|
|
|
|
}
|
|
|
|
</script>
|
|
|