fixed bug not saving quantity for purchase
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
1) SET VERSION
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ namespace rockfishCore.Util
|
||||
{
|
||||
public static class RfVersion
|
||||
{
|
||||
public const string NumberOnly="6.27";
|
||||
public const string NumberOnly="6.28";
|
||||
public const string Full = "Rockfish server " + NumberOnly;
|
||||
}
|
||||
}
|
||||
@@ -11,76 +11,76 @@
|
||||
<title>Rockfish loading....</title>
|
||||
|
||||
<!-- ICONS / MANIFEST -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?rfv=6.27">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?rfv=6.27">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?rfv=6.27">
|
||||
<link rel="manifest" href="/manifest.json?rfv=6.27">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg?rfv=6.27" color="#5bbad5">
|
||||
<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.28">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?rfv=6.28">
|
||||
<link rel="manifest" href="/manifest.json?rfv=6.28">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg?rfv=6.28" color="#5bbad5">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
|
||||
<!-- 3rd party components fonts and icons -->
|
||||
<link href="css/materialdesignicons.min.css?rfv=6.27" 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/app.css?rfv=6.27" type="text/css" />
|
||||
<link rel="stylesheet" href="css/mdi-bs4-compat.css?rfv=6.27" 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.28" 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.28" type="text/css" />
|
||||
|
||||
|
||||
|
||||
<!-- third-party javascript -->
|
||||
<script src="js/lib/jquery-3.3.1.min.js?rfv=6.27"></script>
|
||||
<script src="js/lib/page.js?rfv=6.27"></script>
|
||||
<script src="js/lib/jquery.event.gevent.js?rfv=6.27"></script>
|
||||
<script src="js/lib/jquery.gzserialize.js?rfv=6.27"></script>
|
||||
<script src="js/lib/handlebars.runtime.min-v4.7.6.js?rfv=6.27"></script>
|
||||
<script src="js/lib/store.min.js?rfv=6.27"></script>
|
||||
<script src="js/lib/jquery.autocomplete.min.js?rfv=6.27"></script>
|
||||
<script src="js/lib/moment.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.28"></script>
|
||||
<script src="js/lib/jquery.event.gevent.js?rfv=6.28"></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.28"></script>
|
||||
<script src="js/lib/store.min.js?rfv=6.28"></script>
|
||||
<script src="js/lib/jquery.autocomplete.min.js?rfv=6.28"></script>
|
||||
<script src="js/lib/moment.min.js?rfv=6.28"></script>
|
||||
|
||||
<!-- our javascript -->
|
||||
<script src="js/index.js?rfv=6.27"></script>
|
||||
<script src="js/app.util.js?rfv=6.27"></script>
|
||||
<script src="js/app.api.js?rfv=6.27"></script>
|
||||
<script src="js/app.utilB.js?rfv=6.27"></script>
|
||||
<script src="js/app.nav.js?rfv=6.27"></script>
|
||||
<script src="js/app.shell.js?rfv=6.27"></script>
|
||||
<script src="js/app.fourohfour.js?rfv=6.27"></script>
|
||||
<script src="js/app.authenticate.js?rfv=6.27"></script>
|
||||
<script src="js/app.customers.js?rfv=6.27"></script>
|
||||
<script src="js/app.customerEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.customerSites.js?rfv=6.27"></script>
|
||||
<script src="js/app.customerSiteEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.purchases.js?rfv=6.27"></script>
|
||||
<script src="js/app.purchaseEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.license.js?rfv=6.27"></script>
|
||||
<script src="js/app.licenseTemplates.js?rfv=6.27"></script>
|
||||
<script src="js/app.licenseRequestEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.licenses.js?rfv=6.27"></script>
|
||||
<script src="js/app.licenseView.js?rfv=6.27"></script>
|
||||
<script src="js/app.reportData.js?rfv=6.27"></script>
|
||||
<script src="js/app.reportDataProdEmail.js?rfv=6.27"></script>
|
||||
<script src="js/app.reportDataExpires.js?rfv=6.27"></script>
|
||||
<script src="js/app.search.js?rfv=6.27"></script>
|
||||
<script src="js/app.subscription.js?rfv=6.27"></script>
|
||||
<script src="js/app.subnotify.js?rfv=6.27"></script>
|
||||
<script src="js/app.templates.js?rfv=6.27"></script>
|
||||
<script src="js/app.templateEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.inbox.js?rfv=6.27"></script>
|
||||
<script src="js/app.mailEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.rfcaseEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.rfcases.js?rfv=6.27"></script>
|
||||
<script src="js/app.rfsettings.js?rfv=6.27"></script>
|
||||
<script src="js/app.ops.js?rfv=6.27"></script>
|
||||
<script src="js/app.trials.js?rfv=6.27"></script>
|
||||
<script src="js/app.trialEdit.js?rfv=6.27"></script>
|
||||
<script src="js/app.ravLicenses.js?rfv=6.27"></script>
|
||||
<script src="js/app.ravLicense.js?rfv=6.27"></script>
|
||||
<script src="js/app.vendorNotifications.js?rfv=6.27"></script>
|
||||
<script src="js/app.vendorNotification.js?rfv=6.27"></script>
|
||||
<script src="js/index.js?rfv=6.28"></script>
|
||||
<script src="js/app.util.js?rfv=6.28"></script>
|
||||
<script src="js/app.api.js?rfv=6.28"></script>
|
||||
<script src="js/app.utilB.js?rfv=6.28"></script>
|
||||
<script src="js/app.nav.js?rfv=6.28"></script>
|
||||
<script src="js/app.shell.js?rfv=6.28"></script>
|
||||
<script src="js/app.fourohfour.js?rfv=6.28"></script>
|
||||
<script src="js/app.authenticate.js?rfv=6.28"></script>
|
||||
<script src="js/app.customers.js?rfv=6.28"></script>
|
||||
<script src="js/app.customerEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.customerSites.js?rfv=6.28"></script>
|
||||
<script src="js/app.customerSiteEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.purchases.js?rfv=6.28"></script>
|
||||
<script src="js/app.purchaseEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.license.js?rfv=6.28"></script>
|
||||
<script src="js/app.licenseTemplates.js?rfv=6.28"></script>
|
||||
<script src="js/app.licenseRequestEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.licenses.js?rfv=6.28"></script>
|
||||
<script src="js/app.licenseView.js?rfv=6.28"></script>
|
||||
<script src="js/app.reportData.js?rfv=6.28"></script>
|
||||
<script src="js/app.reportDataProdEmail.js?rfv=6.28"></script>
|
||||
<script src="js/app.reportDataExpires.js?rfv=6.28"></script>
|
||||
<script src="js/app.search.js?rfv=6.28"></script>
|
||||
<script src="js/app.subscription.js?rfv=6.28"></script>
|
||||
<script src="js/app.subnotify.js?rfv=6.28"></script>
|
||||
<script src="js/app.templates.js?rfv=6.28"></script>
|
||||
<script src="js/app.templateEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.inbox.js?rfv=6.28"></script>
|
||||
<script src="js/app.mailEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.rfcaseEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.rfcases.js?rfv=6.28"></script>
|
||||
<script src="js/app.rfsettings.js?rfv=6.28"></script>
|
||||
<script src="js/app.ops.js?rfv=6.28"></script>
|
||||
<script src="js/app.trials.js?rfv=6.28"></script>
|
||||
<script src="js/app.trialEdit.js?rfv=6.28"></script>
|
||||
<script src="js/app.ravLicenses.js?rfv=6.28"></script>
|
||||
<script src="js/app.ravLicense.js?rfv=6.28"></script>
|
||||
<script src="js/app.vendorNotifications.js?rfv=6.28"></script>
|
||||
<script src="js/app.vendorNotification.js?rfv=6.28"></script>
|
||||
|
||||
|
||||
<!-- handlebars templates -->
|
||||
<script src="js/templates/templates.js?rfv=6.27"></script>
|
||||
<script src="js/templates/templates.js?rfv=6.28"></script>
|
||||
|
||||
|
||||
<script>
|
||||
@@ -110,7 +110,7 @@ window.onerror = function ( error ) {
|
||||
|
||||
<body class="rf-body">
|
||||
<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>
|
||||
|
||||
</html>
|
||||
@@ -30,7 +30,7 @@ app.api = (function () {
|
||||
licenseEmailResponse,
|
||||
test;
|
||||
|
||||
RockFishVersion = "6.27";
|
||||
RockFishVersion = "6.28";
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
// NOT AUTHORIZED ERROR HANDLER
|
||||
|
||||
@@ -7,269 +7,267 @@
|
||||
|
||||
/*global $, app */
|
||||
|
||||
app.purchaseEdit = (function() {
|
||||
"use strict";
|
||||
//---------------- BEGIN MODULE SCOPE VARIABLES --------------
|
||||
var stateMap = {},
|
||||
onSave,
|
||||
onDelete,
|
||||
onRenew,
|
||||
configModule,
|
||||
initModule,
|
||||
onPasteNotes;
|
||||
//----------------- END MODULE SCOPE VARIABLES ---------------
|
||||
app.purchaseEdit = (function () {
|
||||
"use strict";
|
||||
//---------------- BEGIN MODULE SCOPE VARIABLES --------------
|
||||
var stateMap = {},
|
||||
onSave,
|
||||
onDelete,
|
||||
onRenew,
|
||||
configModule,
|
||||
initModule,
|
||||
onPasteNotes;
|
||||
//----------------- END MODULE SCOPE VARIABLES ---------------
|
||||
|
||||
//------------------- BEGIN UTILITY METHODS ------------------
|
||||
//-------------------- END UTILITY METHODS -------------------
|
||||
//------------------- BEGIN UTILITY METHODS ------------------
|
||||
//-------------------- END UTILITY METHODS -------------------
|
||||
|
||||
//------------------- BEGIN EVENT HANDLERS -------------------
|
||||
//------------------- BEGIN EVENT HANDLERS -------------------
|
||||
|
||||
onSave = function(event) {
|
||||
event.preventDefault();
|
||||
$.gevent.publish("app-clear-error");
|
||||
//get form data
|
||||
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;
|
||||
onSave = function (event) {
|
||||
|
||||
event.preventDefault();
|
||||
$.gevent.publish("app-clear-error");
|
||||
//get form data
|
||||
var formData = $("form").serializeArray({
|
||||
checkboxesAsBools: true
|
||||
});
|
||||
|
||||
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") {
|
||||
//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);
|
||||
}
|
||||
});
|
||||
//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 {
|
||||
//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");
|
||||
|
||||
//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
|
||||
};
|
||||
|
||||
//Context menu
|
||||
app.nav.contextClear();
|
||||
app.nav.contextAddLink(
|
||||
"purchases/" + stateMap.context.params.site_id,
|
||||
"Purchases",
|
||||
"basket"
|
||||
);
|
||||
onRenew = function (event) {
|
||||
event.preventDefault();
|
||||
$.gevent.publish("app-clear-error");
|
||||
|
||||
// bind actions
|
||||
$("#btn-save").bind("click", onSave);
|
||||
$("#btn-delete").bind("click", onDelete);
|
||||
$("#btn-renew").bind("click", onRenew);
|
||||
$("#notes").bind("paste", onPasteNotes);
|
||||
if (stateMap.id == "new") {
|
||||
$.gevent.publish(
|
||||
"app-show-error",
|
||||
"Save this record before attempting to renew it"
|
||||
);
|
||||
return false;
|
||||
}
|
||||
stateMap.id = "new";
|
||||
|
||||
//Autocomplete
|
||||
app.utilB.autoComplete("name", "purchase.name");
|
||||
app.utilB.autoComplete("productCode", "purchase.productCode");
|
||||
app.utilB.autoComplete("vendorName", "purchase.vendorName");
|
||||
};
|
||||
//case 3396, no more renewal or dupe names
|
||||
// var nm = $('#name').val();
|
||||
// nm = "DUPE-" + nm;
|
||||
// $('#name').val(nm);
|
||||
|
||||
// return public methods
|
||||
return {
|
||||
configModule: configModule,
|
||||
initModule: initModule
|
||||
};
|
||||
//------------------- END PUBLIC METHODS ---------------------
|
||||
//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;
|
||||
|
||||
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 ---------------------
|
||||
})();
|
||||
|
||||
@@ -1,88 +1,153 @@
|
||||
<div>
|
||||
<form id="frm" method="post" action="index.html">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<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 class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="productCode">Product code</label>
|
||||
<input class="form-control" type="text" id="productCode" name="productCode" value="">
|
||||
</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="">
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="productCode"
|
||||
name="productCode"
|
||||
value=""
|
||||
/>
|
||||
</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="form-group">
|
||||
<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 class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<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 class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<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 class="col-sm-6">
|
||||
<div class="form-check">
|
||||
<label class="form-check-label" for="renewNoticeSent">
|
||||
<input class="form-check-input" type="checkbox" name="renewNoticeSent" id="renewNoticeSent">
|
||||
Renew notice sent</label>
|
||||
<input
|
||||
class="form-check-input"
|
||||
type="checkbox"
|
||||
name="renewNoticeSent"
|
||||
id="renewNoticeSent"
|
||||
/>
|
||||
Renew notice sent</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<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 class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<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 class="col-sm-6">
|
||||
{{! <div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="email">Email</label>
|
||||
<input class="form-control" type="text" id="email" name="email" value="">
|
||||
</div>
|
||||
</div> --}}
|
||||
</div> }}
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<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 class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<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 class="app-frm-buttons mt-5">
|
||||
<button id="btn-save" class="btn btn-success">Save</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>
|
||||
</form>
|
||||
</div>
|
||||
@@ -1,3 +1,3 @@
|
||||
<div>
|
||||
<div>
|
||||
<ul id="rf-list" class="rf-list" />
|
||||
</div>
|
||||
@@ -1,5 +1,5 @@
|
||||
<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">
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<nav
|
||||
id="rf-nav"
|
||||
class="navbar fixed-top navbar-expand-lg navbar-dark"
|
||||
style="background-color: #6d00b6;"
|
||||
class="navbar fixed-top navbar-expand-lg navbar-light"
|
||||
style="background-color: #ff10f0;"
|
||||
>
|
||||
{{! navbar-dark bg-success }}
|
||||
<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>
|
||||
</li>
|
||||
|
||||
<li id="rfops" class="nav-item">
|
||||
{{!-- <li id="rfops" class="nav-item">
|
||||
<a
|
||||
class="rfac nav-link mdi mdi-server-network"
|
||||
href="#!/ops"
|
||||
>Server Ops </a>
|
||||
</li>
|
||||
</li> --}}
|
||||
|
||||
<li id="rfsettings" class="nav-item">
|
||||
<a
|
||||
|
||||
Reference in New Issue
Block a user