This commit is contained in:
2024-03-26 15:56:31 +08:00
parent 634e8b71ab
commit 0855ae42cd
547 changed files with 94818 additions and 60463 deletions

View File

@ -1,7 +1,6 @@
<%@ Page Title="" Language="C#" MasterPageFile="~/Maintenance/MaintenanceBase.master" AutoEventWireup="true" CodeFile="WorkOrderHistory.aspx.cs" Inherits="WorkOrderHistory" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<link href="../css/jquery.datetimepicker.css" rel="stylesheet" />
<style type="text/css">
.no_wrap th {
white-space: nowrap;
@ -16,28 +15,6 @@
white-space: nowrap;
}
.dialog-content table {
border-collapse: collapse;
width: 100%;
line-height: 32px;
}
.dialog-content table td.label {
width: 130px;
text-align: right;
padding-right: 10px;
line-height: 24px;
height: 24px;
vertical-align: top;
}
.dialog-content table td input,
.dialog-content table td textarea {
border: 1px solid #a9a9a9;
width: 250px;
height: 18px;
padding: 1px;
}
#dialog_machines .dialog-content table td input {
width: auto;
@ -147,8 +124,6 @@
padding-left: 5px;
}
</style>
<script src="<%=GetFileUrlWithVersion("../js/jquery.datetimepicker.full.js")%>" type="text/javascript"></script>
<script src="<%=GetFileUrlWithVersion("../js/editableselect.js")%>"></script>
<script src="<%=GetFileUrlWithVersion("js/controls.js")%>" type="text/javascript"></script>
<script type="text/javascript">
woquery = function (method, param, callback, error) {
@ -165,13 +140,27 @@
if (!woid) {
return;
}
var begindate = $('#startdatetxt').val();
var enddate = $('#enddatetxt').val();
if (begindate && !$('#startdatetxt').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_BEGINDATEISINVALID', "The begin date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (enddate && !$('#enddatetxt').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_ENDDATEISINVALID', "The end date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (begindate && enddate && begindate > enddate) {
showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE", "End Date must be later than Begin Date."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
showloading(true);
var beginDate = $('#startdatetxt').val();
var endDate = $('#enddatetxt').val();
var searchtxt = "";
searchtxt = htmlencode($.trim($('#searchinputtxt').val()));
woquery('GetWorkOrderHistorys', JSON.stringify([woid, beginDate, endDate, searchtxt]), function (data) {
woquery('GetWorkOrderHistorys', JSON.stringify([woid, begindate, enddate, searchtxt]), function (data) {
showloading(false);
if (typeof (data) === "string") {
showAlert(data, GetTextByKey('P_WORKORDER', "Work Order"));
@ -196,184 +185,190 @@
var status = "";
var category = "";
if (r.UpdateType == 0)
type = GetTextByKey('P_WO_XXX', 'Manually');
type = GetTextByKey('P_WO_HIS_MANUALLY', 'Manually');
else if (r.UpdateType == 1)
type = GetTextByKey('P_WO_XXX', 'Automatically');
type = GetTextByKey('P_WO_HIS_AUTOMATICALLY', 'Automatically');
else if (r.UpdateType == 2)
type = GetTextByKey('P_WO_XXX', 'System');
type = GetTextByKey('P_WO_HIS_SYSTEM', 'System');
if (r.UpdateStatus == 0)
status = GetTextByKey('P_WO_XXX', 'Created');
status = GetTextByKey('P_WO_HIS_CREATED', 'Created');
else if (r.UpdateStatus == 1 || r.UpdateStatus == 4 || r.UpdateStatus == 9999)
status = GetTextByKey('P_WO_XXX', 'Modified');
status = GetTextByKey('P_WO_HIS_MODIFIED', 'Modified');
else if (r.UpdateStatus == 2)
status = GetTextByKey('P_WO_XXX', 'Closed');
status = GetTextByKey('P_WO_HIS_CLOSED', 'Closed');
else if (r.UpdateStatus == 3)
status = GetTextByKey('P_WO_XXX', 'Re_Opened');
status = GetTextByKey('P_WO_HIS_REOPENED', 'Re_Opened');
//else if (r.UpdateStatus == 4)
// status = GetTextByKey('P_WO_XXX', 'Restored');
// status = GetTextByKey('P_WO_HIS_RESTORED', 'Restored');
//else if (r.UpdateStatus == 9999)
// status = GetTextByKey('P_WO_XXX', 'Deleted');
// status = GetTextByKey('P_WO_HIS_DELETED', 'Deleted');
switch (r.Category) {
case 0:
category = GetTextByKey('P_WO_XXX', 'Work Order Status');
category = GetTextByKey('P_WO_WORKORDERSTATUS', 'Work Order Status');
break;
case 1:
category = GetTextByKey('P_WO_XXX', 'Assigned To');
category = GetTextByKey('P_WO_ASSIGNEDTO', 'Assigned To');
break;
case 2:
category = GetTextByKey('P_WO_XXX', 'Advisor');
category = GetTextByKey('P_WO_ADVISOR', 'Advisor');
break;
case 3:
category = GetTextByKey('P_WO_XXX', 'Work Order Type');
category = GetTextByKey('P_WO_WORKORDERTYPE', 'Work Order Type');
break;
case 4:
category = GetTextByKey('P_WO_XXX', 'Location');
category = GetTextByKey('P_WO_LOCATION', 'Location');
break;
case 5:
category = GetTextByKey('P_WO_XXX', 'Department');
category = GetTextByKey('P_WO_DEPARTMENT', 'Department');
break;
case 6:
category = GetTextByKey('P_WO_XXX', 'Alternate Status');
category = GetTextByKey('P_WO_ALTERNATESTATUS', 'Alternate Status');
break;
case 7:
category = GetTextByKey('P_WO_XXX', 'Description');
category = GetTextByKey('P_WO_DESCRIPTION', 'Description');
break;
case 8:
category = GetTextByKey('P_WO_XXX', 'Invoice Number');
category = GetTextByKey('P_WO_INVOICENUMBER', 'Invoice Number');
break;
case 9:
category = GetTextByKey('P_WO_XXX', 'Internal ID');
category = GetTextByKey('P_WO_INTERNALID', 'Internal ID');
break;
case 10:
category = GetTextByKey('P_WO_XXX', 'Complete Date');
category = GetTextByKey('P_WO_COMPLETEDATE', 'Complete Date');
break;
case 11:
category = GetTextByKey('P_WO_XXX', 'Next Follow Up Date');
category = GetTextByKey('P_WO_NEXTFOLLOWUPDATE', 'Next Follow Up Date');
break;
case 12:
category = GetTextByKey('P_WO_XXX', 'Due Date');
category = GetTextByKey('P_WO_DUEDATE', 'Due Date');
break;
case 13:
category = GetTextByKey('P_WO_XXX', 'Parts Expected Date');
category = GetTextByKey('P_WO_PARTSEXPECTEDDATE', 'Parts Expected Date');
break;
case 14:
category = GetTextByKey('P_WO_XXX', 'Last Labor Date');
category = GetTextByKey('P_WO_LASTLABORDATE', 'Last Labor Date');
break;
case 15:
category = GetTextByKey('P_WO_XXX', 'Total Cost');
category = GetTextByKey('P_WO_TOTALCOST', 'Total Cost');
break;
case 16:
category = GetTextByKey('P_WO_XXX', 'Expected Cost');
category = GetTextByKey('P_WO_EXPECTEDCOST', 'Expected Cost');
break;
case 17:
category = GetTextByKey('P_WO_XXX', 'Parts Cost');
category = GetTextByKey('P_WO_PARTSCOST1', 'Parts Cost');
break;
case 18:
category = GetTextByKey('P_WO_XXX', 'Travel Time Cost');
category = GetTextByKey('P_WO_TRAVELTIMECOST1', 'Travel Time Cost');
break;
case 19:
category = GetTextByKey('P_WO_XXX', 'Labor Cost');
category = GetTextByKey('P_WO_LABORCOST1', 'Labor Cost');
break;
case 20:
category = GetTextByKey('P_WO_XXX', 'Other Cost');
category = GetTextByKey('P_WO_OTHERCOST1', 'Other Cost');
break;
case 21:
category = GetTextByKey('P_WO_XXX', 'Estimate');
category = GetTextByKey('P_WO_ESTIMATE', 'Estimate');
break;
case 22:
category = GetTextByKey('P_WO_XXX', 'Inspection');
category = GetTextByKey('P_WO_INSPECTION', 'Inspection');
break;
case 23:
category = GetTextByKey('P_WO_XXX', 'Invoice');
category = GetTextByKey('P_WO_INVOICE', 'Invoice');
break;
case 24:
category = GetTextByKey('P_WO_XXX', 'Segment User');
category = GetTextByKey('P_WO_SEGMENTUSER', 'Segment User');
break;
case 25:
category = GetTextByKey('P_WO_XXX', 'Segment Hours');
category = GetTextByKey('P_WO_SEGMENTHOURS', 'Segment Hours');
break;
case 26:
category = GetTextByKey('P_WO_XXX', 'Segment Jobsite');
category = GetTextByKey('P_WO_SEGMENTJOBSITE', 'Segment Jobsite');
break;
case 27:
category = GetTextByKey('P_WO_XXX', 'Segment Cost');
category = GetTextByKey('P_WO_SEGMENTCOST', 'Segment Cost');
break;
case 28:
category = GetTextByKey('P_WO_XXX', 'Segment Component');
category = GetTextByKey('P_WO_SEGMENTCOMPONENT', 'Segment Component');
break;
case 29:
category = GetTextByKey('P_WO_XXX', 'Segment Completed');
category = GetTextByKey('P_WO_SEGMENTCOMPLETED', 'Segment Completed');
break;
case 30:
category = GetTextByKey('P_WO_XXX', 'Segment Completed Date');
category = GetTextByKey('P_WO_SEGMENTCOMPLETEDDATE', 'Segment Completed Date');
break;
case 31:
category = GetTextByKey('P_WO_XXX', 'Segment Description');
category = GetTextByKey('P_WO_SEGMENTDESCRIPTION', 'Segment Description');
break;
case 32:
category = GetTextByKey('P_WO_XXX', 'Segment Notes');
category = GetTextByKey('P_WO_SEGMENTNOTES', 'Segment Notes');
break;
case 33:
category = GetTextByKey('P_WO_XXX', 'Segment');
category = GetTextByKey('P_WO_SEGMENT', 'Segment');
break;
case 34:
category = GetTextByKey('P_WO_XXX', 'Alerts');
category = GetTextByKey('P_WO_ALERTS', 'Alerts');
break;
case 35:
category = GetTextByKey('P_WO_XXX', 'Segment Type');
category = GetTextByKey('P_WO_SEGMENTTYPE', 'Segment Type');
break;
case 36:
category = GetTextByKey('P_WO_XXX', 'Segment Billable');
category = GetTextByKey('P_WO_SEGMENTBILLABLE', 'Segment Billable');
break;
case 37:
category = GetTextByKey('P_WO_XXX', 'Component');
category = GetTextByKey('P_WO_COMPONENT', 'Component');
break;
case 38:
category = GetTextByKey('P_WO_XXX', 'Billable');
category = GetTextByKey('P_WO_BILLABLE', 'Billable');
break;
case 39:
category = GetTextByKey('P_WO_XXX', 'Bill to job');
category = GetTextByKey('P_WO_BILLTOJOB', 'Bill to job');
break;
case 40:
category = GetTextByKey('P_WO_XXX', 'Work Order Attachment');
category = GetTextByKey('P_WO_WORKORDERATTACHMENT', 'Work Order Attachment');
break;
case 41:
category = GetTextByKey('P_WO_XXX', 'Estimate Attachment');
category = GetTextByKey('P_WO_ESTIMATEATTACHMENT', 'Estimate Attachment');
break;
case 42:
category = GetTextByKey('P_WO_XXX', 'Invoice Attachment');
category = GetTextByKey('P_WO_INVOICEATTACHMENT', 'Invoice Attachment');
break;
case 43:
category = GetTextByKey('P_WO_XXX', 'Company Name');
category = GetTextByKey('P_WO_COMPANYNAME', 'Company Name');
break;
case 44:
category = GetTextByKey('P_WO_XXX', 'Asset');
category = GetTextByKey('P_WO_ASSET', 'Asset');
break;
case 45:
category = GetTextByKey('P_WO_XXX', 'Parts Order Number');
category = GetTextByKey('P_WO_PARTSORDERNUMBER', 'Parts Order Number');
break;
case 46:
category = GetTextByKey('P_WO_XXX', 'Parts Status');
category = GetTextByKey('P_WO_PARTSSTATUS', 'Parts Status');
break;
case 47:
category = GetTextByKey('P_WO_XXX', 'Salesperson');
category = GetTextByKey('P_WO_SALESPERSON', 'Salesperson');
break;
case 48:
category = GetTextByKey('P_WO_XXX', 'Inspection Template');
category = GetTextByKey('P_WO_INSPECTIONTEMPLATE', 'Inspection Template');
break;
case 49:
category = GetTextByKey('P_WO_MESSAGESTATUS', 'Message Status');
break;
case 50:
category = GetTextByKey('P_WO_PONUMBER', 'PO Number');
break;
case 97:
category = GetTextByKey('P_WO_XXX', 'Deleted');
category = GetTextByKey('P_WO_HIS_DELETED', 'Deleted');
break;
case 98:
category = GetTextByKey('P_WO_XXX', 'Restored');
category = GetTextByKey('P_WO_HIS_RESTORED', 'Restored');
break;
case 99:
category = GetTextByKey('P_WO_XXX', 'WO Life Cycle');
category = GetTextByKey('P_WO_HIS_WOLIFECYCLE', 'WO Life Cycle');
break;
default:
category = GetTextByKey('P_WO_XXX', 'Other');
category = GetTextByKey('P_WO_HIS_OTHER', 'Other');
break;
}
@ -394,7 +389,7 @@
var td_del = $("<td></td>");
tr.append(td_del);
if (r.UpdateStatus == 9999 && r.CanDeleteAndRestore) {
var span_del = $('<a href="#" data-lgid="P_UM_XXXX">Restore</a>').data('wo', r).click(ManageDeleteAndRestore);
var span_del = $('<a href="#" data-lgid="P_WO_HIS_RESTORED">Restore</a>').data('wo', r).click(ManageDeleteAndRestore);
td_del.append(span_del);
}
if (i % 2 == 1)
@ -415,12 +410,12 @@
return;
var alerttitle = GetTextByKey('P_WORKORDER', "Work Order");
showConfirm(GetTextByKey("P_WO_XXX", 'Are you sure you want to restore this work order?'), alerttitle, function () {
showConfirm(GetTextByKey("P_WO_HIS_AREYOUSUREYOUWANTTORESTORETHISWORKORDER", 'Are you sure you want to restore this work order?'), alerttitle, function () {
woquery("RestoreDeleteWorkOrder", wo.WorkOrderId, function (data) {
if (data == "OK")
OnRefresh();
}, function (err) {
showAlert(GetTextByKey("P_WO_XXX", 'Failed to restore this work order.'), alerttitle);
showAlert(GetTextByKey("P_WO_HIS_FAILEDTORESTORETHISWORKORDER", 'Failed to restore this work order.'), alerttitle);
});
});
}
@ -446,27 +441,6 @@
GetWorkOrderNumbers();
OnRefresh();
$('#startdatetxt').datetimepicker({
timepicker: false,
format: 'm/d/Y',
enterLikeTab: false,
onSelectDate: function (v, inp) {
var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00');
inp.parent().data('val', [date]);
}
});
$('#enddatetxt').datetimepicker({
timepicker: false,
format: 'm/d/Y',
enterLikeTab: false,
onSelectDate: function (v, inp) {
var date = new DateFormatter().formatDate(v, 'm/d/Y 00:00:00');
inp.parent().data('val', [date]);
}
});
$('#searchinputtxt').keydown(searchEnter);
$(window).resize(function () {
$("#divwoh").css("height", $(window).height() - $("#divwoh").offset().top - 4);
@ -491,28 +465,40 @@
return;
}
var from = $('#startdatetxt').val();
var to = $('#enddatetxt').val();
var searchtxt = "";
var begindate = $('#startdatetxt').val();
var enddate = $('#enddatetxt').val();
if (begindate && !$('#startdatetxt').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_BEGINDATEISINVALID', "The begin date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (enddate && !$('#enddatetxt').is(':valid')) {
showAlert(GetTextByKey('P_COMMON_ENDDATEISINVALID', "The end date is invalid."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
if (begindate && enddate && begindate > enddate) {
showAlert(GetTextByKey("P_JS_ENDDATEMUSTBELATERTHANBEGINDATE", "End Date must be later than Begin Date."), GetTextByKey("P_FR_ERROR", 'Error'));
return;
}
window.open("../ExportToFile.aspx?type=wohis&t=" + searchtxt + "&from=" + from + "&to=" + to + "&woid=" + woid);
var searchtxt = "";
window.open("../ExportToFile.aspx?type=wohis&t=" + searchtxt + "&from=" + begindate + "&to=" + enddate + "&woid=" + woid);
}
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div style="min-width: 400px;">
<div class="page_title" data-lgid="P_XXX">Work Order History</div>
<div class="page_title" data-lgid="P_WO_HIS_WORKORDERHISTORY">Work Order History</div>
<div class="search_bar">
<input type="password" autocomplete="new-password" style="display: none" />
<span data-lgid="P_XXX">Work Order Number:</span>
<span data-lgid="P_WO_WORKORDERNUMBER_COLON">Work Order Number:</span>
<div class="dropdown" id="div_wonumber" style="width: 200px"></div>
<span style="margin-left: 5px;" data-lgid="P_FR_BEGINDATE_COLON">Begin Date:&nbsp;</span>
<div>
<input id="startdatetxt" type="text" style="width: 80px; margin-left: 5px;" value="<%=BeginDate %>" autocomplete="off" />
<input id="startdatetxt" type="date" class="type-date" required min="1900-01-01" style="width: 90px; margin-left: 5px;" value="<%=BeginDate %>" autocomplete="off" />
</div>
<span style="margin-left: 5px;" data-lgid="P_FR_ENDDATE_COLON">End Date:&nbsp;</span>
<div>
<input id="enddatetxt" type="text" style="width: 80px; margin-left: 5px;" value="<%=EndDate %>" autocomplete="off" />
<input id="enddatetxt" type="date" class="type-date" required min="1900-01-01" style="width: 90px; margin-left: 5px;" value="<%=EndDate %>" autocomplete="off" />
</div>
<div style="display: none;">
<input id="searchinputtxt" autocomplete="off" style="width: 100px; margin-left: 5px;" />
@ -528,12 +514,12 @@
<table id="tbwoh" style="min-width: 1250px; table-layout: fixed;">
<thead>
<tr>
<th style="width: 150px;" data-lgid="P_XXX">Date/Time Stamp</th>
<th style="width: 80px;" data-lgid="P_XXX">Update</th>
<th style="width: 120px;" data-lgid="P_XXX">Update Type</th>
<th style="width: 200px;" data-lgid="P_XXX">By</th>
<th style="width: 200px;" data-lgid="P_XXX">Category</th>
<th style="width: 400px;" data-lgid="P_XXX">Detail</th>
<th style="width: 150px;" data-lgid="P_WO_HIS_DATETIMESTAMP">Date/Time Stamp</th>
<th style="width: 80px;" data-lgid="P_WO_HIS_UPDATE">Update</th>
<th style="width: 120px;" data-lgid="P_WO_HIS_UPDATETYPE">Update Type</th>
<th style="width: 200px;" data-lgid="P_WO_HIS_BY">By</th>
<th style="width: 200px;" data-lgid="P_WO_HIS_CATEGORY">Category</th>
<th style="width: 400px;" data-lgid="P_WO_HIS_DETAIL">Detail</th>
<th></th>
</tr>
</thead>