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

@@ -25,6 +25,7 @@ app.purchaseEdit = (function() {
//------------------- BEGIN EVENT HANDLERS ------------------- //------------------- BEGIN EVENT HANDLERS -------------------
onSave = function (event) { onSave = function (event) {
event.preventDefault(); event.preventDefault();
$.gevent.publish("app-clear-error"); $.gevent.publish("app-clear-error");
//get form data //get form data
@@ -33,7 +34,12 @@ app.purchaseEdit = (function() {
}); });
var submitData = app.utilB.objectifyFormDataArray(formData); 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? //is this a new record?
if (stateMap.id != "new") { if (stateMap.id != "new") {
//put id into the form data //put id into the form data
@@ -51,7 +57,10 @@ app.purchaseEdit = (function() {
$.gevent.publish("app-show-error", res.msg); $.gevent.publish("app-show-error", res.msg);
} else { } else {
page( page(
"#!/purchaseEdit/" + res.id + "/" + stateMap.context.params.site_id "#!/purchaseEdit/" +
res.id +
"/" +
stateMap.context.params.site_id
); );
return false; return false;
} }
@@ -84,18 +93,11 @@ app.purchaseEdit = (function() {
$("#salesOrderNumber").val(""); $("#salesOrderNumber").val("");
//set purchaseDate to today //set purchaseDate to today
$("#purchaseDate").val( $("#purchaseDate").val(moment().toISOString().substring(0, 10));
moment()
.toISOString()
.substring(0, 10)
);
//set expireDate to plus one year from today //set expireDate to plus one year from today
$("#expireDate").val( $("#expireDate").val(
moment() moment().add(1, "years").toISOString().substring(0, 10)
.add(1, "years")
.toISOString()
.substring(0, 10)
); );
//clear the couponCode //clear the couponCode
@@ -218,7 +220,6 @@ app.purchaseEdit = (function() {
.appendTo("#frm"); .appendTo("#frm");
title = "Purchase - " + res.name; title = "Purchase - " + res.name;
if (stateMap.id != "new") { if (stateMap.id != "new") {
//fetch existing record //fetch existing record
app.api.get("purchase/" + stateMap.id, function (res) { app.api.get("purchase/" + stateMap.id, function (res) {
@@ -232,17 +233,14 @@ app.purchaseEdit = (function() {
} else { } else {
//it's a new record, set default //it's a new record, set default
$("#quantity").val(1); $("#quantity").val(1);
$("#purchaseDate").val(new Date().toISOString().substring(0, 10)); $("#purchaseDate").val(
new Date().toISOString().substring(0, 10)
);
$("#expireDate").val( $("#expireDate").val(
moment() moment().add(1, "years").toISOString().substring(0, 10)
.add(1, "years")
.toISOString()
.substring(0, 10)
); );
$("#vendorName").val("ShareIt"); $("#vendorName").val("ShareIt");
} }
} }
}); });

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
class="form-control"
type="text"
id="productCode"
name="productCode"
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="quantity">Quantity</label> <label for="quantity">Quantity</label>
<input class="form-control" type="number" id="quantity" name="quantity" value=""> <input
class="form-control"
type="number"
id="quantity"
name="quantity"
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="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
class="form-check-input"
type="checkbox"
name="renewNoticeSent"
id="renewNoticeSent"
/>
Renew notice sent</label> 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,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