fixed bug not saving quantity for purchase

This commit is contained in:
2022-11-25 00:17:51 +00:00
parent d3f817690b
commit 06b31c3d39
9 changed files with 406 additions and 343 deletions

View File

@@ -5,7 +5,7 @@
1) SET VERSION 1) SET VERSION
SET app.api RFVERSION property SET app.api RFVERSION property
RENAME ?rfv=6.27 parameter in default.htm to the new version so all files update on mobile RENAME ?rfv=6.28 parameter in default.htm to the new version so all files update on mobile
1.5) Run buildtemplates.bat if handlebars templates have changed at all 1.5) Run buildtemplates.bat if handlebars templates have changed at all

View File

@@ -2,7 +2,7 @@ namespace rockfishCore.Util
{ {
public static class RfVersion public static class RfVersion
{ {
public const string NumberOnly="6.27"; public const string NumberOnly="6.28";
public const string Full = "Rockfish server " + NumberOnly; public const string Full = "Rockfish server " + NumberOnly;
} }
} }

View File

@@ -11,76 +11,76 @@
<title>Rockfish loading....</title> <title>Rockfish loading....</title>
<!-- ICONS / MANIFEST --> <!-- ICONS / MANIFEST -->
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?rfv=6.27"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?rfv=6.28">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?rfv=6.27"> <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?rfv=6.28">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?rfv=6.27"> <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?rfv=6.28">
<link rel="manifest" href="/manifest.json?rfv=6.27"> <link rel="manifest" href="/manifest.json?rfv=6.28">
<link rel="mask-icon" href="/safari-pinned-tab.svg?rfv=6.27" color="#5bbad5"> <link rel="mask-icon" href="/safari-pinned-tab.svg?rfv=6.28" color="#5bbad5">
<meta name="theme-color" content="#ffffff"> <meta name="theme-color" content="#ffffff">
<!-- 3rd party components fonts and icons --> <!-- 3rd party components fonts and icons -->
<link href="css/materialdesignicons.min.css?rfv=6.27" media="all" rel="stylesheet" type="text/css" /> <link href="css/materialdesignicons.min.css?rfv=6.28" media="all" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="css/bootstrap.min.css?rfv=6.27" type="text/css" /> <link rel="stylesheet" href="css/bootstrap.min.css?rfv=6.28" type="text/css" />
<link rel="stylesheet" href="css/app.css?rfv=6.27" type="text/css" /> <link rel="stylesheet" href="css/app.css?rfv=6.28" type="text/css" />
<link rel="stylesheet" href="css/mdi-bs4-compat.css?rfv=6.27" type="text/css" /> <link rel="stylesheet" href="css/mdi-bs4-compat.css?rfv=6.28" type="text/css" />
<!-- third-party javascript --> <!-- third-party javascript -->
<script src="js/lib/jquery-3.3.1.min.js?rfv=6.27"></script> <script src="js/lib/jquery-3.3.1.min.js?rfv=6.28"></script>
<script src="js/lib/page.js?rfv=6.27"></script> <script src="js/lib/page.js?rfv=6.28"></script>
<script src="js/lib/jquery.event.gevent.js?rfv=6.27"></script> <script src="js/lib/jquery.event.gevent.js?rfv=6.28"></script>
<script src="js/lib/jquery.gzserialize.js?rfv=6.27"></script> <script src="js/lib/jquery.gzserialize.js?rfv=6.28"></script>
<script src="js/lib/handlebars.runtime.min-v4.7.6.js?rfv=6.27"></script> <script src="js/lib/handlebars.runtime.min-v4.7.6.js?rfv=6.28"></script>
<script src="js/lib/store.min.js?rfv=6.27"></script> <script src="js/lib/store.min.js?rfv=6.28"></script>
<script src="js/lib/jquery.autocomplete.min.js?rfv=6.27"></script> <script src="js/lib/jquery.autocomplete.min.js?rfv=6.28"></script>
<script src="js/lib/moment.min.js?rfv=6.27"></script> <script src="js/lib/moment.min.js?rfv=6.28"></script>
<!-- our javascript --> <!-- our javascript -->
<script src="js/index.js?rfv=6.27"></script> <script src="js/index.js?rfv=6.28"></script>
<script src="js/app.util.js?rfv=6.27"></script> <script src="js/app.util.js?rfv=6.28"></script>
<script src="js/app.api.js?rfv=6.27"></script> <script src="js/app.api.js?rfv=6.28"></script>
<script src="js/app.utilB.js?rfv=6.27"></script> <script src="js/app.utilB.js?rfv=6.28"></script>
<script src="js/app.nav.js?rfv=6.27"></script> <script src="js/app.nav.js?rfv=6.28"></script>
<script src="js/app.shell.js?rfv=6.27"></script> <script src="js/app.shell.js?rfv=6.28"></script>
<script src="js/app.fourohfour.js?rfv=6.27"></script> <script src="js/app.fourohfour.js?rfv=6.28"></script>
<script src="js/app.authenticate.js?rfv=6.27"></script> <script src="js/app.authenticate.js?rfv=6.28"></script>
<script src="js/app.customers.js?rfv=6.27"></script> <script src="js/app.customers.js?rfv=6.28"></script>
<script src="js/app.customerEdit.js?rfv=6.27"></script> <script src="js/app.customerEdit.js?rfv=6.28"></script>
<script src="js/app.customerSites.js?rfv=6.27"></script> <script src="js/app.customerSites.js?rfv=6.28"></script>
<script src="js/app.customerSiteEdit.js?rfv=6.27"></script> <script src="js/app.customerSiteEdit.js?rfv=6.28"></script>
<script src="js/app.purchases.js?rfv=6.27"></script> <script src="js/app.purchases.js?rfv=6.28"></script>
<script src="js/app.purchaseEdit.js?rfv=6.27"></script> <script src="js/app.purchaseEdit.js?rfv=6.28"></script>
<script src="js/app.license.js?rfv=6.27"></script> <script src="js/app.license.js?rfv=6.28"></script>
<script src="js/app.licenseTemplates.js?rfv=6.27"></script> <script src="js/app.licenseTemplates.js?rfv=6.28"></script>
<script src="js/app.licenseRequestEdit.js?rfv=6.27"></script> <script src="js/app.licenseRequestEdit.js?rfv=6.28"></script>
<script src="js/app.licenses.js?rfv=6.27"></script> <script src="js/app.licenses.js?rfv=6.28"></script>
<script src="js/app.licenseView.js?rfv=6.27"></script> <script src="js/app.licenseView.js?rfv=6.28"></script>
<script src="js/app.reportData.js?rfv=6.27"></script> <script src="js/app.reportData.js?rfv=6.28"></script>
<script src="js/app.reportDataProdEmail.js?rfv=6.27"></script> <script src="js/app.reportDataProdEmail.js?rfv=6.28"></script>
<script src="js/app.reportDataExpires.js?rfv=6.27"></script> <script src="js/app.reportDataExpires.js?rfv=6.28"></script>
<script src="js/app.search.js?rfv=6.27"></script> <script src="js/app.search.js?rfv=6.28"></script>
<script src="js/app.subscription.js?rfv=6.27"></script> <script src="js/app.subscription.js?rfv=6.28"></script>
<script src="js/app.subnotify.js?rfv=6.27"></script> <script src="js/app.subnotify.js?rfv=6.28"></script>
<script src="js/app.templates.js?rfv=6.27"></script> <script src="js/app.templates.js?rfv=6.28"></script>
<script src="js/app.templateEdit.js?rfv=6.27"></script> <script src="js/app.templateEdit.js?rfv=6.28"></script>
<script src="js/app.inbox.js?rfv=6.27"></script> <script src="js/app.inbox.js?rfv=6.28"></script>
<script src="js/app.mailEdit.js?rfv=6.27"></script> <script src="js/app.mailEdit.js?rfv=6.28"></script>
<script src="js/app.rfcaseEdit.js?rfv=6.27"></script> <script src="js/app.rfcaseEdit.js?rfv=6.28"></script>
<script src="js/app.rfcases.js?rfv=6.27"></script> <script src="js/app.rfcases.js?rfv=6.28"></script>
<script src="js/app.rfsettings.js?rfv=6.27"></script> <script src="js/app.rfsettings.js?rfv=6.28"></script>
<script src="js/app.ops.js?rfv=6.27"></script> <script src="js/app.ops.js?rfv=6.28"></script>
<script src="js/app.trials.js?rfv=6.27"></script> <script src="js/app.trials.js?rfv=6.28"></script>
<script src="js/app.trialEdit.js?rfv=6.27"></script> <script src="js/app.trialEdit.js?rfv=6.28"></script>
<script src="js/app.ravLicenses.js?rfv=6.27"></script> <script src="js/app.ravLicenses.js?rfv=6.28"></script>
<script src="js/app.ravLicense.js?rfv=6.27"></script> <script src="js/app.ravLicense.js?rfv=6.28"></script>
<script src="js/app.vendorNotifications.js?rfv=6.27"></script> <script src="js/app.vendorNotifications.js?rfv=6.28"></script>
<script src="js/app.vendorNotification.js?rfv=6.27"></script> <script src="js/app.vendorNotification.js?rfv=6.28"></script>
<!-- handlebars templates --> <!-- handlebars templates -->
<script src="js/templates/templates.js?rfv=6.27"></script> <script src="js/templates/templates.js?rfv=6.28"></script>
<script> <script>
@@ -110,7 +110,7 @@ window.onerror = function ( error ) {
<body class="rf-body"> <body class="rf-body">
<div id="app" class="container"></div> <div id="app" class="container"></div>
<script src="js/lib/bootstrap.min.js?rfv=6.27"></script> <script src="js/lib/bootstrap.min.js?rfv=6.28"></script>
</body> </body>
</html> </html>

View File

@@ -30,7 +30,7 @@ app.api = (function () {
licenseEmailResponse, licenseEmailResponse,
test; test;
RockFishVersion = "6.27"; RockFishVersion = "6.28";
////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////
// NOT AUTHORIZED ERROR HANDLER // NOT AUTHORIZED ERROR HANDLER

View File

@@ -7,269 +7,267 @@
/*global $, app */ /*global $, app */
app.purchaseEdit = (function() { app.purchaseEdit = (function () {
"use strict"; "use strict";
//---------------- BEGIN MODULE SCOPE VARIABLES -------------- //---------------- BEGIN MODULE SCOPE VARIABLES --------------
var stateMap = {}, var stateMap = {},
onSave, onSave,
onDelete, onDelete,
onRenew, onRenew,
configModule, configModule,
initModule, initModule,
onPasteNotes; onPasteNotes;
//----------------- END MODULE SCOPE VARIABLES --------------- //----------------- END MODULE SCOPE VARIABLES ---------------
//------------------- BEGIN UTILITY METHODS ------------------ //------------------- BEGIN UTILITY METHODS ------------------
//-------------------- END UTILITY METHODS ------------------- //-------------------- END UTILITY METHODS -------------------
//------------------- BEGIN EVENT HANDLERS ------------------- //------------------- BEGIN EVENT HANDLERS -------------------
onSave = function(event) { onSave = function (event) {
event.preventDefault();
$.gevent.publish("app-clear-error"); event.preventDefault();
//get form data $.gevent.publish("app-clear-error");
var formData = $("form").serializeArray({ //get form data
checkboxesAsBools: true var formData = $("form").serializeArray({
}); checkboxesAsBools: true
});
var submitData = app.utilB.objectifyFormDataArray(formData);
//is this a new record?
if (stateMap.id != "new") {
//put id into the form data
submitData.id = stateMap.id;
app.api.update("purchase", submitData, function(res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
}
});
} else {
//create new record
app.api.create("purchase", submitData, function(res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
page(
"#!/purchaseEdit/" + res.id + "/" + stateMap.context.params.site_id
);
return false;
}
});
}
return false; //prevent default
};
onRenew = function(event) {
event.preventDefault();
$.gevent.publish("app-clear-error");
if (stateMap.id == "new") {
$.gevent.publish(
"app-show-error",
"Save this record before attempting to renew it"
);
return false;
}
stateMap.id = "new";
//case 3396, no more renewal or dupe names
// var nm = $('#name').val();
// nm = "DUPE-" + nm;
// $('#name').val(nm);
//case 3396, set values accordingly
//Clear salesOrderNumber
$("#salesOrderNumber").val("");
//set purchaseDate to today
$("#purchaseDate").val(
moment()
.toISOString()
.substring(0, 10)
);
//set expireDate to plus one year from today
$("#expireDate").val(
moment()
.add(1, "years")
.toISOString()
.substring(0, 10)
);
//clear the couponCode
$("#couponCode").val("");
//clear the notes
$("#notes").val("");
$("#renewNoticeSent").prop("checked", false);
$("#cancelDate").val("");
return false; //prevent default
};
//ONDELETE
//
onDelete = function(event) {
event.preventDefault();
$.gevent.publish("app-clear-error");
var r = confirm("Are you sure you want to delete this record?");
if (r == true) {
//==== DELETE ====
app.api.remove("purchase/" + stateMap.id, function(res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
//deleted, return to master list
page("#!/purchases/" + stateMap.context.params.site_id);
return false;
}
});
} else {
return false;
}
return false; //prevent default?
};
onPasteNotes = function(event) {
var clipboardData, pastedData;
var e = event.originalEvent;
// // Stop data actually being pasted into div
// e.stopPropagation();
// e.preventDefault();
// Get pasted data via clipboard API
clipboardData = e.clipboardData || window.clipboardData;
pastedData = clipboardData.getData("Text");
//Iterate through the lines looking for the SHareIt name=value lines (they all contain equal signs)
var lines = pastedData.split("\n"); // lines is an array of strings
var purchaseData = {};
// Loop through all lines
for (var j = 0; j < lines.length; j++) {
var thisLine = lines[j];
if (thisLine.includes("=")) {
var thisElement = thisLine.split("=");
purchaseData[thisElement[0].trim()] = thisElement[1].trim();
}
}
//Now have an object with the value pairs in it
if (purchaseData["ShareIt Ref #"]) {
$("#salesOrderNumber").val(purchaseData["ShareIt Ref #"]);
}
// if (purchaseData["E-Mail"]) {
// $("#email").val(purchaseData["E-Mail"]);
// }
};
//-------------------- END EVENT HANDLERS --------------------
//------------------- BEGIN PUBLIC METHODS -------------------
//CONFIGMODULE
//
configModule = function(context) {
stateMap.context = context.context;
if (stateMap.context.params.id) {
stateMap.id = stateMap.context.params.id;
}
};
//INITMODULE
//
initModule = function($container) {
if (typeof $container === "undefined") {
$container = $("#app-shell-main-content");
}
$container.html(Handlebars.templates["app.purchaseEdit"]({}));
var title = "Purchase";
if (!stateMap.context.params.site_id) {
throw "app.purchaseEdit.js::initModule - There is no stateMap.context.params.site_id!";
}
//Append master record id as a hidden form field for referential integrity
$("<input />")
.attr("type", "hidden")
.attr("name", "siteId")
.attr("value", stateMap.context.params.site_id)
.appendTo("#frm");
//fetch entire site record to get name *and* customer id which is required for redundancy
//RFC - get site name and customer name for form
app.api.get("site/" + stateMap.context.params.site_id, function(res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
//Also append customer ID redundantly
$("<input />")
.attr("type", "hidden")
.attr("name", "customerId")
.attr("value", res.customerId)
.appendTo("#frm");
title = "Purchase - " + res.name;
var submitData = app.utilB.objectifyFormDataArray(formData);
//serializeArray method doesn't handle "Number" type inputs at all
//just ignores them so we need to do it here manually
submitData['quantity']=Number($("#quantity").val());
//I know, it's weird, but it wasn't required way back in the day and the plan is to replace rockfish with a Vue/vuetify app anyway.
console.log({ formData: formData, submitData: submitData });
//is this a new record?
if (stateMap.id != "new") { if (stateMap.id != "new") {
//fetch existing record //put id into the form data
app.api.get("purchase/" + stateMap.id, function(res) { submitData.id = stateMap.id;
if (res.error) {
$.gevent.publish("app-show-error", res.msg); app.api.update("purchase", submitData, function (res) {
} else { if (res.error) {
//fill out form $.gevent.publish("app-show-error", res.msg);
app.utilB.formData(res); }
} });
});
} else { } else {
//it's a new record, set default //create new record
$("#quantity").val(1); app.api.create("purchase", submitData, function (res) {
$("#purchaseDate").val(new Date().toISOString().substring(0, 10)); if (res.error) {
$("#expireDate").val( $.gevent.publish("app-show-error", res.msg);
moment() } else {
.add(1, "years") page(
.toISOString() "#!/purchaseEdit/" +
.substring(0, 10) res.id +
); "/" +
$("#vendorName").val("ShareIt"); stateMap.context.params.site_id
);
return false;
}
});
} }
return false; //prevent default
} };
});
//Context menu onRenew = function (event) {
app.nav.contextClear(); event.preventDefault();
app.nav.contextAddLink( $.gevent.publish("app-clear-error");
"purchases/" + stateMap.context.params.site_id,
"Purchases",
"basket"
);
// bind actions if (stateMap.id == "new") {
$("#btn-save").bind("click", onSave); $.gevent.publish(
$("#btn-delete").bind("click", onDelete); "app-show-error",
$("#btn-renew").bind("click", onRenew); "Save this record before attempting to renew it"
$("#notes").bind("paste", onPasteNotes); );
return false;
}
stateMap.id = "new";
//Autocomplete //case 3396, no more renewal or dupe names
app.utilB.autoComplete("name", "purchase.name"); // var nm = $('#name').val();
app.utilB.autoComplete("productCode", "purchase.productCode"); // nm = "DUPE-" + nm;
app.utilB.autoComplete("vendorName", "purchase.vendorName"); // $('#name').val(nm);
};
// return public methods //case 3396, set values accordingly
return {
configModule: configModule, //Clear salesOrderNumber
initModule: initModule $("#salesOrderNumber").val("");
};
//------------------- END PUBLIC METHODS --------------------- //set purchaseDate to today
$("#purchaseDate").val(moment().toISOString().substring(0, 10));
//set expireDate to plus one year from today
$("#expireDate").val(
moment().add(1, "years").toISOString().substring(0, 10)
);
//clear the couponCode
$("#couponCode").val("");
//clear the notes
$("#notes").val("");
$("#renewNoticeSent").prop("checked", false);
$("#cancelDate").val("");
return false; //prevent default
};
//ONDELETE
//
onDelete = function (event) {
event.preventDefault();
$.gevent.publish("app-clear-error");
var r = confirm("Are you sure you want to delete this record?");
if (r == true) {
//==== DELETE ====
app.api.remove("purchase/" + stateMap.id, function (res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
//deleted, return to master list
page("#!/purchases/" + stateMap.context.params.site_id);
return false;
}
});
} else {
return false;
}
return false; //prevent default?
};
onPasteNotes = function (event) {
var clipboardData, pastedData;
var e = event.originalEvent;
// // Stop data actually being pasted into div
// e.stopPropagation();
// e.preventDefault();
// Get pasted data via clipboard API
clipboardData = e.clipboardData || window.clipboardData;
pastedData = clipboardData.getData("Text");
//Iterate through the lines looking for the SHareIt name=value lines (they all contain equal signs)
var lines = pastedData.split("\n"); // lines is an array of strings
var purchaseData = {};
// Loop through all lines
for (var j = 0; j < lines.length; j++) {
var thisLine = lines[j];
if (thisLine.includes("=")) {
var thisElement = thisLine.split("=");
purchaseData[thisElement[0].trim()] = thisElement[1].trim();
}
}
//Now have an object with the value pairs in it
if (purchaseData["ShareIt Ref #"]) {
$("#salesOrderNumber").val(purchaseData["ShareIt Ref #"]);
}
// if (purchaseData["E-Mail"]) {
// $("#email").val(purchaseData["E-Mail"]);
// }
};
//-------------------- END EVENT HANDLERS --------------------
//------------------- BEGIN PUBLIC METHODS -------------------
//CONFIGMODULE
//
configModule = function (context) {
stateMap.context = context.context;
if (stateMap.context.params.id) {
stateMap.id = stateMap.context.params.id;
}
};
//INITMODULE
//
initModule = function ($container) {
if (typeof $container === "undefined") {
$container = $("#app-shell-main-content");
}
$container.html(Handlebars.templates["app.purchaseEdit"]({}));
var title = "Purchase";
if (!stateMap.context.params.site_id) {
throw "app.purchaseEdit.js::initModule - There is no stateMap.context.params.site_id!";
}
//Append master record id as a hidden form field for referential integrity
$("<input />")
.attr("type", "hidden")
.attr("name", "siteId")
.attr("value", stateMap.context.params.site_id)
.appendTo("#frm");
//fetch entire site record to get name *and* customer id which is required for redundancy
//RFC - get site name and customer name for form
app.api.get("site/" + stateMap.context.params.site_id, function (res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
//Also append customer ID redundantly
$("<input />")
.attr("type", "hidden")
.attr("name", "customerId")
.attr("value", res.customerId)
.appendTo("#frm");
title = "Purchase - " + res.name;
if (stateMap.id != "new") {
//fetch existing record
app.api.get("purchase/" + stateMap.id, function (res) {
if (res.error) {
$.gevent.publish("app-show-error", res.msg);
} else {
//fill out form
app.utilB.formData(res);
}
});
} else {
//it's a new record, set default
$("#quantity").val(1);
$("#purchaseDate").val(
new Date().toISOString().substring(0, 10)
);
$("#expireDate").val(
moment().add(1, "years").toISOString().substring(0, 10)
);
$("#vendorName").val("ShareIt");
}
}
});
//Context menu
app.nav.contextClear();
app.nav.contextAddLink(
"purchases/" + stateMap.context.params.site_id,
"Purchases",
"basket"
);
// bind actions
$("#btn-save").bind("click", onSave);
$("#btn-delete").bind("click", onDelete);
$("#btn-renew").bind("click", onRenew);
$("#notes").bind("paste", onPasteNotes);
//Autocomplete
app.utilB.autoComplete("name", "purchase.name");
app.utilB.autoComplete("productCode", "purchase.productCode");
app.utilB.autoComplete("vendorName", "purchase.vendorName");
};
// return public methods
return {
configModule: configModule,
initModule: initModule
};
//------------------- END PUBLIC METHODS ---------------------
})(); })();

View File

@@ -1,88 +1,153 @@
<div> <div>
<form id="frm" method="post" action="index.html"> <form id="frm" method="post" action="index.html">
<div class="row"> <div class="row">
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="name">Product name</label> <label for="name">Product name</label>
<input class="form-control" type="text" id="name" name="name" value=""> <input
class="form-control"
type="text"
id="name"
name="name"
value=""
/>
</div> </div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="productCode">Product code</label> <label for="productCode">Product code</label>
<input class="form-control" type="text" id="productCode" name="productCode" value=""> <input
</div> class="form-control"
</div> type="text"
<div class="col-sm-6"> id="productCode"
<div class="form-group"> name="productCode"
<label for="quantity">Quantity</label> value=""
<input class="form-control" type="number" id="quantity" name="quantity" value=""> />
</div> </div>
</div> </div>
<div class="col-sm-6">
<div class="form-group">
<label for="quantity">Quantity</label>
<input
class="form-control"
type="number"
id="quantity"
name="quantity"
value=""
/>
</div>
</div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="salesOrderNumber">Sales order number</label> <label for="salesOrderNumber">Sales order number</label>
<input class="form-control" type="text" id="salesOrderNumber" name="salesOrderNumber" value=""> <input
class="form-control"
type="text"
id="salesOrderNumber"
name="salesOrderNumber"
value=""
/>
</div> </div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="vendorName">Vendor</label> <label for="vendorName">Vendor</label>
<input class="form-control" type="text" id="vendorName" name="vendorName" value=""> <input
class="form-control"
type="text"
id="vendorName"
name="vendorName"
value=""
/>
</div> </div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="purchaseDate">Purchased</label> <label for="purchaseDate">Purchased</label>
<input class="form-control" type="date" id="purchaseDate" name="purchaseDate" value=""> <input
class="form-control"
type="date"
id="purchaseDate"
name="purchaseDate"
value=""
/>
</div> </div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-check"> <div class="form-check">
<label class="form-check-label" for="renewNoticeSent"> <label class="form-check-label" for="renewNoticeSent">
<input class="form-check-input" type="checkbox" name="renewNoticeSent" id="renewNoticeSent"> <input
Renew notice sent</label> class="form-check-input"
type="checkbox"
name="renewNoticeSent"
id="renewNoticeSent"
/>
Renew notice sent</label>
</div> </div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="expireDate">Subscription expire</label> <label for="expireDate">Subscription expire</label>
<input class="form-control" type="date" id="expireDate" name="expireDate" value=""> <input
class="form-control"
type="date"
id="expireDate"
name="expireDate"
value=""
/>
</div> </div>
</div> </div>
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="cancelDate">Cancel date</label> <label for="cancelDate">Cancel date</label>
<input class="form-control" type="date" id="cancelDate" name="cancelDate" value=""> <input
class="form-control"
type="date"
id="cancelDate"
name="cancelDate"
value=""
/>
</div> </div>
</div> </div>
{{!-- <div class="col-sm-6"> {{! <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="email">Email</label> <label for="email">Email</label>
<input class="form-control" type="text" id="email" name="email" value=""> <input class="form-control" type="text" id="email" name="email" value="">
</div> </div>
</div> --}} </div> }}
<div class="col-sm-6"> <div class="col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="couponCode">Coupon code</label> <label for="couponCode">Coupon code</label>
<input class="form-control" type="text" id="couponCode" name="couponCode" value=""> <input
class="form-control"
type="text"
id="couponCode"
name="couponCode"
value=""
/>
</div> </div>
</div> </div>
<div class="col-sm-12"> <div class="col-sm-12">
<div class="form-group"> <div class="form-group">
<label for="notes">ShareIt Order</label> <label for="notes">ShareIt Order</label>
<textarea class="form-control" id="notes" name="notes" rows="10"/> <textarea
class="form-control"
id="notes"
name="notes"
rows="10"
></textarea>
</div> </div>
</div> </div>
</div> </div>
<div class="app-frm-buttons mt-5"> <div class="app-frm-buttons mt-5">
<button id="btn-save" class="btn btn-success">Save</button> <button id="btn-save" class="btn btn-success">Save</button>
<button id="btn-delete" class="btn btn-outline-dark">Delete</button> <button id="btn-delete" class="btn btn-outline-dark">Delete</button>
<button id="btn-renew" class="btn btn-outline-primary">Renew</button> <button
id="btn-renew"
class="btn btn-outline-primary"
>Renew</button>
</div> </div>
</form> </form>
</div> </div>

View File

@@ -1,3 +1,3 @@
<div> <div>
<ul id="rf-list" class="rf-list" /> <ul id="rf-list" class="rf-list" />
</div> </div>

View File

@@ -1,5 +1,5 @@
<div> <div>
<div class="alert alert-success mb-5" id="about"></div> <div class="alert mb-5" id="about"></div>
<form id="frm" method="post" action="index.html"> <form id="frm" method="post" action="index.html">

View File

@@ -1,7 +1,7 @@
<nav <nav
id="rf-nav" id="rf-nav"
class="navbar fixed-top navbar-expand-lg navbar-dark" class="navbar fixed-top navbar-expand-lg navbar-light"
style="background-color: #6d00b6;" style="background-color: #ff10f0;"
> >
{{! navbar-dark bg-success }} {{! navbar-dark bg-success }}
<button <button
@@ -67,12 +67,12 @@
<a class="rfac nav-link mdi mdi-help" href="https://rfuser:mypasswordforrfuser2022@rockfish.ayanova.com/docs/index.html">Docs </a> <a class="rfac nav-link mdi mdi-help" href="https://rfuser:mypasswordforrfuser2022@rockfish.ayanova.com/docs/index.html">Docs </a>
</li> </li>
<li id="rfops" class="nav-item"> {{!-- <li id="rfops" class="nav-item">
<a <a
class="rfac nav-link mdi mdi-server-network" class="rfac nav-link mdi mdi-server-network"
href="#!/ops" href="#!/ops"
>Server Ops </a> >Server Ops </a>
</li> </li> --}}
<li id="rfsettings" class="nav-item"> <li id="rfsettings" class="nav-item">
<a <a