226 lines
8.2 KiB
JavaScript
Executable File
226 lines
8.2 KiB
JavaScript
Executable File
// require('../../../node_modules/canvasjs/dist/canvasjs.3');
|
|
|
|
var $ = require('jquery');
|
|
// JS is equivalent to the normal "bootstrap" package
|
|
// no need to set this to a variable, just require it
|
|
require('bootstrap-sass');
|
|
// or you can include specific pieces
|
|
// require('bootstrap-sass/javascripts/bootstrap/tooltip');
|
|
// require('bootstrap-sass/javascripts/bootstrap/popover');
|
|
|
|
$(document).ready(function () {
|
|
$('[data-toggle="popover"]').popover();
|
|
});
|
|
|
|
console.log('hello console for main.js');
|
|
var stuff = ['initialstuff'];
|
|
|
|
angular
|
|
.module('caisse', [])
|
|
.controller('CaisseCtrl', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) {
|
|
$scope.productsFromDB = []; // loaded products
|
|
$scope.categories = []; // product categories
|
|
$scope.sellingComment = "un gens"; // comment about the client or the current selling
|
|
$scope.initLoadDone = false; // becames true after first init of product loading
|
|
$scope.recentSellings = [];
|
|
$scope.lesParams = {};
|
|
$scope.countProductsSoldForActiveFestival = {};
|
|
$scope.paidAmount = 0;
|
|
$scope.expressSelling = true;
|
|
$scope.pausedSelling = [];
|
|
$scope.show_config = {
|
|
stock_count: false,
|
|
sold: true,
|
|
};
|
|
$scope.activeItemsSold = []; // list of products ID to sell
|
|
$scope.activeSelling = []; // list of products to sell
|
|
$scope.activeFestival = { // an event where selling take place
|
|
id : null,
|
|
name : "le festival",
|
|
dateCreation : new Date(),
|
|
chiffreAffaire: 0,
|
|
clientsCount : 0,
|
|
commentaire : ""
|
|
};
|
|
/**
|
|
* get the sum of products prices
|
|
* @param list
|
|
* @returns {number}
|
|
*/
|
|
$scope.sumOfList = function (list) {
|
|
let counter = 0;
|
|
for (let i = 0; i < list.length; i++) {
|
|
counter += list[i].price;
|
|
}
|
|
return counter;
|
|
};
|
|
/**
|
|
* sum of current selling list prices
|
|
* @returns {number}
|
|
* @constructor
|
|
*/
|
|
$scope.CurrentSellingTotal = function () {
|
|
return $scope.sumOfList($scope.activeSelling);
|
|
};
|
|
|
|
$scope.regenActiveSellingIds = function () {
|
|
$scope.activeItemsSold = [];
|
|
$scope.paidAmount = 0;
|
|
for (let obj in $scope.activeSelling) {
|
|
$scope.activeItemsSold.push(obj.id);
|
|
}
|
|
$scope.paidAmount += $scope.sumOfList($scope.activeSelling);
|
|
};
|
|
$scope.stuff = stuff;
|
|
$scope.setActiveSelling = function (selling) {
|
|
$scope.activeSelling = selling;
|
|
};
|
|
$scope.pauseSelling = function (selling) {
|
|
$scope.pausedSelling.push(selling);
|
|
};
|
|
/**
|
|
* add to current sell list
|
|
* @param product
|
|
*/
|
|
$scope.addProduct = function (product) {
|
|
product.stockCount--;
|
|
$scope.activeSelling.push(product);
|
|
$scope.activeItemsSold.push(product.id);
|
|
$scope.regenActiveSellingIds();
|
|
};
|
|
/**
|
|
* remove from current sell list
|
|
* @param product
|
|
*/
|
|
$scope.removeProduct = function (product, index) {
|
|
product.stockCount++;
|
|
$scope.activeSelling.splice($index, 1);
|
|
$scope.regenActiveSellingIds()
|
|
};
|
|
$scope.pauseSelling = function () {
|
|
$scope.pausedSelling.push(angular.copy($scope.activeSelling));
|
|
$scope.activeSelling = [];
|
|
};
|
|
$scope.setBackPausedSelling = function (sellingList, index) {
|
|
$scope.activeSelling = angular.copy(sellingList);
|
|
$scope.pausedSelling.splice(index, 1);
|
|
};
|
|
|
|
$scope.clearSellingComment = function () {
|
|
$scope.sellingComment = '';
|
|
document.querySelector('#sellingCommentInput').focus();
|
|
};
|
|
$scope.clearCurrentSelling = function () {
|
|
$scope.paidAmount = 0;
|
|
// $scope.sellingComment = "";
|
|
$scope.activeSelling = [];
|
|
};
|
|
|
|
// http related calls
|
|
$scope.fetchProductsFromDB = function () {
|
|
console.log('fetch products...');
|
|
$http.get('get-my-products').then((rep) => {
|
|
|
|
console.log('ok', rep);
|
|
customCategories = [];
|
|
for (let c of rep.data.categories) {
|
|
c.hidden = false;
|
|
customCategories.push(c);
|
|
}
|
|
console.log('customCategories', customCategories);
|
|
$scope.categories = customCategories;
|
|
$scope.productsFromDB = customCategories;
|
|
// $scope.recentSellings = rep.data.history;
|
|
// festoche
|
|
$scope.activeFestival.id = rep.data.lastFestival.id;
|
|
$scope.activeFestival.name = rep.data.lastFestival.name;
|
|
$scope.activeFestival.dateCreation = rep.data.lastFestival.dateCreation;
|
|
$scope.activeFestival.commentaire = rep.data.lastFestival.commentaire;
|
|
$scope.activeFestival.chiffreAffaire = rep.data.lastFestival.chiffreAffaire;
|
|
$scope.activeFestival.fondDeCaisseAvant = rep.data.lastFestival.fondDeCaisseAvant;
|
|
$scope.activeFestival.fondDeCaisseApres = rep.data.lastFestival.fondDeCaisseApres;
|
|
$scope.activeFestival.clientsCount = rep.data.lastFestival.clientsCount;
|
|
// stat count for items
|
|
$scope.countProductsSoldForActiveFestival = rep.data.lastFestival.sold;
|
|
console.log(' $scope.countProductsSoldForActiveFestival', $scope.countProductsSoldForActiveFestival);
|
|
//done
|
|
$scope.initLoadDone = true;
|
|
}, (err) => {
|
|
console.log(err);
|
|
$scope.initLoadDone = true;
|
|
});
|
|
};
|
|
|
|
/**
|
|
* sell one product, assuming the client has the right amount of money
|
|
* @param product
|
|
*/
|
|
$scope.expressSell = function (product) {
|
|
$scope.addProduct(product);
|
|
$scope.sendForm();
|
|
};
|
|
$scope.recentId = 0;
|
|
$scope.logger = function (stuff) {
|
|
console.log('logger', stuff);
|
|
};
|
|
$scope.sendForm = function () {
|
|
console.log('$scope.sellingComment', this.sellingComment);
|
|
let lesParams = {
|
|
paidByClient : this.paidAmount,
|
|
sellingComment: this.sellingComment,
|
|
activeSelling : this.activeSelling,
|
|
activeFestival: this.activeFestival
|
|
};
|
|
$scope.recentSellings.push({
|
|
id : this.recentId++,
|
|
amount : this.CurrentSellingTotal(),
|
|
paidAmount: this.paidAmount,
|
|
products :
|
|
angular
|
|
.copy(this.activeSelling)
|
|
});
|
|
console.log('$scope.recentSellings', this.recentSellings);
|
|
$scope.lesParams = lesParams;
|
|
$http({
|
|
method : 'POST',
|
|
url : 'add-selling',
|
|
headers: {
|
|
'Content-Type': 'application/json'
|
|
},
|
|
data : lesParams // pass in data as strings
|
|
}).then(function (rep) {
|
|
$scope.clearCurrentSelling();
|
|
// if successful, bind success message to message
|
|
$scope.successMessage = rep.data.message;
|
|
$scope.activeFestival.chiffreAffaire = rep.data.newChiffreAffaire;
|
|
$scope.activeFestival.clientsCount = rep.data.clientsCount;
|
|
$scope.countProductsSoldForActiveFestival = rep.data.activeFestival.sold;
|
|
$scope.showTemporaryMessage();
|
|
console.log(rep);
|
|
if (!rep.success) {
|
|
// if not successful, bind errors to error variables
|
|
$scope.errors = rep.errors;
|
|
}
|
|
}, function (rep) {
|
|
console.log('nope! ', rep.data);
|
|
})
|
|
;
|
|
};
|
|
|
|
$scope.sellingOk = false;
|
|
$scope.tempMessage = {};
|
|
$scope.showTemporaryMessage = function(){
|
|
if($scope.sellingOk ){
|
|
return;
|
|
}
|
|
$scope.sellingOk = true;
|
|
$timeout.cancel($scope.tempMessage );
|
|
$scope.tempMessage = $timeout(function(){
|
|
$scope.sellingOk=false;
|
|
},2000)
|
|
};
|
|
$scope.init = (function () {
|
|
$scope.fetchProductsFromDB();
|
|
})();
|
|
}]);
|