inventory definition.coffee

This commit is contained in:
yamin
2017-10-23 11:40:37 +06:30
69 changed files with 869 additions and 946 deletions

View File

@@ -9,14 +9,16 @@
// //
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives. // about supported directives.
//
//= require jquery //= require jquery
//= require tether //= require tether
//= require bootstrap //= require bootstrap/js/popper.min
//= require bootstrap/js/bootstrap-material-design.min
//= require jquery_ujs //= require jquery_ujs
//= require turbolinks //= require turbolinks
//= require cable //= require jquery-slimscroll/jquery.slimscroll.js
//= require jquery-ui //= require node-waves/waves.js
//= require bootstrap-datepicker //= require sweetalert/sweetalert.min.js
//= require bootstrap/modal //= require BSBMaterial/admin.js
//= require BSBMaterial/demo.js
//= require custom.js

View File

@@ -12,10 +12,17 @@
// //
//= require jquery //= require jquery
//= require tether //= require tether
//= require bootstrap //= require bootstrap/js/popper.min
//= require bootstrap/js/bootstrap-material-design.min
//= require jquery_ujs //= require jquery_ujs
//= require turbolinks //= require turbolinks
//= require cable //= require cable
//= require jquery-slimscroll/jquery.slimscroll.js
//= require node-waves/waves.js
//= require sweetalert/sweetalert.min.js
//= require BSBMaterial/admin.js
//= require BSBMaterial/demo.js
//= require custom.js
$(document).ready(function(){ $(document).ready(function(){

View File

@@ -34,54 +34,11 @@
//= require BSBMaterial/admin.js //= require BSBMaterial/admin.js
//= require BSBMaterial/pages/index.js //= require BSBMaterial/pages/index.js
//= require BSBMaterial/demo.js //= require BSBMaterial/demo.js
//= require select2
//= require custom.js
$(document).on('turbolinks:load', function() {
$('.datetimepicker').bootstrapMaterialDatePicker({
format: 'DD-MM YYYY - HH:mm',
clearButton: true,
weekStart: 1
});
$('.datepicker').bootstrapMaterialDatePicker({
format: 'DD-MM-YYYY',
clearButton: true,
weekStart: 1,
time: false
});
$('.timepicker').bootstrapMaterialDatePicker({
format: 'HH:mm',
clearButton: true,
date: false
});
});
$(function(){ $(function(){
$('body').bootstrapMaterialDesign();
var height = ($(window).height() - ($('.legal').outerHeight() + $('.user-info').outerHeight() + $('.navbar').innerHeight()));
$('#custom-slimscroll').slimScroll({
height: height,
size: '5px',
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
borderRadius: '0',
railBorderRadius: '0'
});
$('#order-detail-slimscroll').slimScroll({
height: height-180,
size: '5px',
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
borderRadius: '0',
railBorderRadius: '0'
});
// Image Upload // Image Upload
$("#simple_menu_item_image_path").fileinput({ $("#simple_menu_item_image_path").fileinput({
previewFileType: "image", previewFileType: "image",
@@ -123,54 +80,6 @@ $(function(){
} }
}); });
$('.delete').click(function(){
var method = $(this).attr('data-method');
var url = $(this).attr('data-ref');
var html_text = $( this ).siblings( "#delete_text" ).html();
swal({
title: "Confirmation",
text: html_text,
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
html: true
}, function (isConfirm) {
if (isConfirm) {
$.ajax({
type: method,
url: url ,
success: function(data) {
}
});
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
});
$('.dddddddd').click(function(){
var currentForm = $(this).closest("form");
bootbox.confirm({
title: 'Confirmation',
message: $('#delete_text').html(),
buttons: {
'cancel': {
label: 'No',
className: 'btn green col-md-4 pull-left'
},
'confirm': {
label: 'Yes',
className: 'btn red col-md-4 pull-right'
}
},
callback: function(result) {
if (result) {
currentForm.submit();
}
}
});
});
}); });
$(document).on("focus", "[data-behaviour~='datepicker']", function(e){ $(document).on("focus", "[data-behaviour~='datepicker']", function(e){

View File

@@ -0,0 +1,50 @@
$(function(){
$('body').bootstrapMaterialDesign();
var height = ($(window).height() - ($('.legal').outerHeight() + $('.user-info').outerHeight() + $('.navbar').innerHeight()));
$('#custom-slimscroll').slimScroll({
height: height,
size: '5px',
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
borderRadius: '0',
railBorderRadius: '0'
});
$('#order-detail-slimscroll').slimScroll({
height: height-180,
size: '5px',
color: 'rgba(0,0,0,0.5)',
alwaysVisible: false,
borderRadius: '0',
railBorderRadius: '0'
});
$('.delete').click(function(){
var method = $(this).attr('data-method');
var url = $(this).attr('data-ref');
var html_text = $( this ).siblings( "#delete_text" ).html();
swal({
title: "Confirmation",
text: html_text,
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
html: true
}, function (isConfirm) {
if (isConfirm) {
$.ajax({
type: method,
url: url ,
success: function(data) {
}
});
} else {
swal("Cancelled", "Your imaginary file is safe :)", "error");
}
});
});
});

View File

@@ -0,0 +1,13 @@
//= require jquery
//= require tether
//= require bootstrap/js/popper.min
//= require bootstrap/js/bootstrap-material-design.min
//= require jquery_ujs
//= require turbolinks
//= require jquery-slimscroll/jquery.slimscroll.js
//= require node-waves/waves.js
//= require sweetalert/sweetalert.min.js
//= require BSBMaterial/admin.js
//= require BSBMaterial/demo.js
//= require custom.js
//= require select2

View File

@@ -1,12 +1,15 @@
//= require jquery //= require jquery
//= require tether //= require tether
//= require bootstrap //= require bootstrap/js/popper.min
//= require bootstrap/js/bootstrap-material-design.min
//= require jquery_ujs //= require jquery_ujs
//= require turbolinks //= require turbolinks
//= require cable //= require jquery-slimscroll/jquery.slimscroll.js
//= require jquery-ui //= require node-waves/waves.js
//= require bootstrap-datepicker //= require sweetalert/sweetalert.min.js
//= require jquery.datetimepicker //= require BSBMaterial/admin.js
//= require BSBMaterial/demo.js
//= require custom.js
$(document).ready(function(){ $(document).ready(function(){
// auto refresh every 60 seconds // auto refresh every 60 seconds
@@ -19,7 +22,7 @@ $(document).ready(function(){
order_status = $(".selected-item").children().find(".orders-order-status").text().substr(0,6).trim(); order_status = $(".selected-item").children().find(".orders-order-status").text().substr(0,6).trim();
// Enable/Disable Button // Enable/Disable Button
control_button(order_status); //control_button(order_status);
$(".orders").on('click', function(){ $(".orders").on('click', function(){
$("#order-sub-total").text(''); $("#order-sub-total").text('');
@@ -35,7 +38,7 @@ $(document).ready(function(){
var order_status=$(this).find(".orders-order-status").text().trim(); var order_status=$(this).find(".orders-order-status").text().trim();
// Enable/Disable Button // Enable/Disable Button
control_button(order_status); //control_button(order_status);
var customer_id=$(this).find(".customer-id").text(); var customer_id=$(this).find(".customer-id").text();
show_customer_details(customer_id); show_customer_details(customer_id);
@@ -110,7 +113,7 @@ $(document).ready(function(){
}); });
// Bill Request // Bill Request
$('#request_bills').click(function() { /*$('#request_bills').click(function() {
var order_id=$(".selected-item").find(".orders-id").text().substr(0,16); var order_id=$(".selected-item").find(".orders-id").text().substr(0,16);
if(order_id!=""){ if(order_id!=""){
window.location.href = '/origami/' + order_id + '/request_bills' window.location.href = '/origami/' + order_id + '/request_bills'
@@ -119,52 +122,52 @@ $(document).ready(function(){
alert("Please select an order!"); alert("Please select an order!");
} }
return false; return false;
}); });*/
// Discount for Payment // Discount for Payment
$('#discount').click(function() { // $('#discount').click(function() {
var order_id=$(".selected-item").find(".orders-id").text().substr(0,16); // var order_id=$(".selected-item").find(".orders-id").text().substr(0,16);
if(order_id!=""){ // if(order_id!=""){
window.location.href = '/origami/' + order_id + '/discount' // window.location.href = '/origami/' + order_id + '/discount'
} // }
else { // else {
alert("Please select an order!"); // alert("Please select an order!");
} // }
return false; // return false;
}); // });
// Pay Discount for Payment // Pay Discount for Payment
$("#pay-discount").on('click', function(e){ // $("#pay-discount").on('click', function(e){
e.preventDefault(); // e.preventDefault();
var sale_id = $('#sale-id').text(); // var sale_id = $('#sale-id').text();
var sale_item_id = $('.selected-item').attr('id').substr(0,16); // var sale_item_id = $('.selected-item').attr('id').substr(0,16);
var sub_total = $('#order-sub-total').text(); // var sub_total = $('#order-sub-total').text();
var grand_total = $('#order-grand-total').text(); // var grand_total = $('#order-grand-total').text();
var discount_type = $('#discount-type').val(); // var discount_type = $('#discount-type').val();
var discount_value = $('#discount-amount').val(); // var discount_value = $('#discount-amount').val();
var discount_amount = discount_value; // var discount_amount = discount_value;
var ajax_url = "/origami/" + sale_id + "/discount"; // var ajax_url = "/origami/" + sale_id + "/discount";
if(sale_item_id != null){ // if(sale_item_id != null){
ajax_url = "/origami/" + sale_item_id + "/discount"; // ajax_url = "/origami/" + sale_item_id + "/discount";
sub_total = $("#"+sale_item_id).children().find("#item-total-price").text(); // sub_total = $("#"+sale_item_id).children().find("#item-total-price").text();
} // }
// For Percentage Discount // // For Percentage Discount
if(discount_type == 1){ // if(discount_type == 1){
discount_amount=(sub_total*discount_value)/100; // discount_amount=(sub_total*discount_value)/100;
} // }
var params = {'sale_id': sale_id, 'sale_item_id': sale_item_id, 'grand_total' : grand_total, 'discount_type':discount_type, 'discount_value':discount_value, 'discount_amount':discount_amount}; // var params = {'sale_id': sale_id, 'sale_item_id': sale_item_id, 'grand_total' : grand_total, 'discount_type':discount_type, 'discount_value':discount_value, 'discount_amount':discount_amount};
$.ajax({ // $.ajax({
type: "POST", // type: "POST",
url: ajax_url, // url: ajax_url,
data: params, // data: params,
success:function(result){ } // success:function(result){ }
}); // });
}); // });
// Payment for Bill // Payment for Bill
@@ -180,118 +183,118 @@ $(document).ready(function(){
return false; return false;
}); });
$('#customer').click(function() { // $('#customer').click(function() {
var sale = $(".selected-item").find(".orders-id").text().substr(0,16); // var sale = $(".selected-item").find(".orders-id").text().substr(0,16);
if (sale.substring(0, 3)=="SAL") { // if (sale.substring(0, 3)=="SAL") {
var sale_id = sale // var sale_id = sale
}else{ // }else{
var sale_id = $(".selected-item").find(".order-cid").text(); // var sale_id = $(".selected-item").find(".order-cid").text();
} // }
window.location.href = '/origami/'+ sale_id + "/customers" // window.location.href = '/origami/'+ sale_id + "/customers"
return false; // return false;
}); // });
$('#re-print').click(function() { // $('#re-print').click(function() {
var sale_id = $(".selected-item").find(".orders-id").text().substr(0,16); // var sale_id = $(".selected-item").find(".orders-id").text().substr(0,16);
window.location.href = '/origami/'+ sale_id + "/reprint" // window.location.href = '/origami/'+ sale_id + "/reprint"
return false; // return false;
}); // });
function show_customer_details(customer_id){ // function show_customer_details(customer_id){
if(window.location.pathname.substring(0, 12) == "/origami/SAL"){ // if(window.location.pathname.substring(0, 12) == "/origami/SAL"){
var url = customer_id+"/get_customer/" // var url = customer_id+"/get_customer/"
}else{ // }else{
var url = "origami/"+customer_id+"/get_customer/" // var url = "origami/"+customer_id+"/get_customer/"
} // }
$('.customer_detail').removeClass('hide'); // $('.customer_detail').removeClass('hide');
//Start Ajax // //Start Ajax
$.ajax({ // $.ajax({
type: "GET", // type: "GET",
url: url, // url: url,
data: {}, // data: {},
dataType: "json", // dataType: "json",
success: function(data) { // success: function(data) {
$("#customer_name").text(data["customer"].name); // $("#customer_name").text(data["customer"].name);
if (data["response_data"]["data"].length) { // if (data["response_data"]["data"].length) {
$.each(data["response_data"]["data"], function (i) { // $.each(data["response_data"]["data"], function (i) {
if(data["response_data"]["data"][i]["accountable_type"] == "RebateAccount"){ // if(data["response_data"]["data"][i]["accountable_type"] == "RebateAccount"){
var balance = data["response_data"]["data"][i]["balance"]; // var balance = data["response_data"]["data"][i]["balance"];
if (data["response_data"]["status"]==true) { // if (data["response_data"]["status"]==true) {
$('.rebate_amount').removeClass('hide'); // $('.rebate_amount').removeClass('hide');
row = // row =
'<td class="charges-name">' + data["response_data"]["data"][i]["accountable_type"] +'</td>' // '<td class="charges-name">' + data["response_data"]["data"][i]["accountable_type"] +'</td>'
+'<td class="item-attr">' + balance + '</td>'; // +'<td class="item-attr">' + balance + '</td>';
$(".rebate_amount").html(row); // $(".rebate_amount").html(row);
} // }
} // }
}); // });
}else{ // }else{
$('.rebate_amount').addClass('hide'); // $('.rebate_amount').addClass('hide');
} // }
} // }
}); // });
//End Ajax // //End Ajax
} // }
/* For Receipt - Calculate discount or tax */ /* For Receipt - Calculate discount or tax */
$('.cashier_number').on('click', function(event){ // $('.cashier_number').on('click', function(event){
if(event.handled !== true) { // if(event.handled !== true) {
var original_value=0; // var original_value=0;
original_value = $('#discount-amount').val(); // original_value = $('#discount-amount').val();
var input_type = $(this).attr("data-type"); // var input_type = $(this).attr("data-type");
switch (input_type) { // switch (input_type) {
case 'num': // case 'num':
var input_value = $(this).attr("data-value"); // var input_value = $(this).attr("data-value");
if (original_value == "0.0"){ // if (original_value == "0.0"){
$('#discount-amount').val(input_value); // $('#discount-amount').val(input_value);
update_balance(); // update_balance();
} // }
else{ // else{
$('#discount-amount').val(original_value + '' + input_value); // $('#discount-amount').val(original_value + '' + input_value);
update_balance(); // update_balance();
} // }
break; // break;
case 'add': // case 'add':
var input_value = $(this).attr("data-value"); // var input_value = $(this).attr("data-value");
amount = parseInt(input_value); // amount = parseInt(input_value);
$('#discount-amount').val(amount); // $('#discount-amount').val(amount);
$('#discount-type').val(1); // $('#discount-type').val(1);
update_balance(); // update_balance();
break; // break;
case 'del' : // case 'del' :
var discount_text=$('#discount-amount').val(); // var discount_text=$('#discount-amount').val();
$('#discount-amount').val(discount_text.substr(0,discount_text.length-1)); // $('#discount-amount').val(discount_text.substr(0,discount_text.length-1));
update_balance(); // update_balance();
break; // break;
case 'clr': // case 'clr':
$('#discount-amount').val("0.0"); // $('#discount-amount').val("0.0");
update_balance(); // update_balance();
break; // break;
} // }
event.handled = true; // event.handled = true;
} else { // } else {
return false; // return false;
} // }
}); // });
$('.discount-item-row').on('click',function(){ // $('.discount-item-row').on('click',function(){
$('.discount-item-row').removeClass('selected-item'); // $('.discount-item-row').removeClass('selected-item');
$(this).addClass('selected-item'); // $(this).addClass('selected-item');
}); // });
// $(".orders").on('click', function(){ // $(".orders").on('click', function(){
// var dining_id = $(this).attr("data-id"); // var dining_id = $(this).attr("data-id");

View File

@@ -1,15 +1,20 @@
@import "bootstrap"; //@import "bootstrap";
@import "font-awesome"; //@import "font-awesome";
@import "theme"; //@import "theme";
@import "jquery-ui"; //@import "jquery-ui";
@import "bootstrap-datepicker3"; //@import "bootstrap-datepicker3";
@import "bootstrap/modal"; //@import "bootstrap/modal";
@import "tether";
/* Show it is fixed to the top */ @import "bootstrap/css/bootstrap-material-design.min";
// body { @import "node-waves/waves";
// min-height: 75rem; @import "animate-css/animate";
// padding-top: 4.5rem; @import "sweetalert/sweetalert.css";
// } @import "multi-select/css/multi-select.css";
@import "bootstrap-material-datetimepicker/css/bootstrap-material-datetimepicker";
@import "morrisjs/morris";
@import "BSBMaterial/style";
@import "BSBMaterial/themes/all-themes";
@import "reset";
.selected-item { .selected-item {
color: #fff !important; color: #fff !important;
@@ -45,14 +50,7 @@
.jconfirm-box-container{ .jconfirm-box-container{
margin-left:-40px !important margin-left:-40px !important
} }
.card-columns {
@include media-breakpoint-only(lg) {
column-count: 5;
}
@include media-breakpoint-only(xl) {
column-count: 5;
}
}
#sxModal { #sxModal {
display: none; display: none;
@@ -93,4 +91,5 @@
width: 480px; width: 480px;
height: 375px; height: 375px;
} }

View File

@@ -1,12 +1,13 @@
@import "bootstrap"; @import "tether";
@import "font-awesome"; @import "bootstrap/css/bootstrap-material-design.min";
@import "theme"; @import "node-waves/waves";
@import "animate-css/animate";
/* Show it is fixed to the top */ @import "sweetalert/sweetalert.css";
// body { @import "bootstrap-material-datetimepicker/css/bootstrap-material-datetimepicker";
// min-height: 75rem; @import "morrisjs/morris";
// padding-top: 4.5rem; @import "BSBMaterial/style";
// } @import "BSBMaterial/themes/all-themes";
@import "reset";
.order-completed { .order-completed {
background-color: #CCFFDD; background-color: #CCFFDD;
} }

View File

@@ -9,476 +9,7 @@
@import "fileinput.min"; @import "fileinput.min";
@import "BSBMaterial/style"; @import "BSBMaterial/style";
@import "BSBMaterial/themes/all-themes"; @import "BSBMaterial/themes/all-themes";
@import "reset";
/* Start Reset Theme */
.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col-auto, .col-lg, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-auto, .col-md, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-auto, .col-sm, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-auto, .col-xl, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-auto {
padding-left: 10px;
padding-right: 10px;
}
.col-lg-1, .col-md-1, .col-sm-1,col-xl-1{
padding-left: 5px ;
padding-right: 5px ;
}
.navbar {
padding: 0.1rem 1rem;
}
.navbar-header {
padding: 0px;
}
.navbar-brand {
padding-top: 0rem;
padding-bottom: 0rem;
}
.navbar-brand-txt {
position: relative;
top: 5px;
}
.navbar-right a {
color: #fff;
}
.navbar-right a.dropdown-toggle {
position: relative;
top: -5px;
}
.dropdown-menu {
margin-top: 0px !important;
}
.switch label {
color: #070707 !important;
}
.ls-closed .bars:after, .ls-closed .bars:before {
position: absolute;
top: 8px;
}
section.content {
margin: 60px 15px 0 225px;
}
.sidebar {
width: 210px;
height: calc(100vh - 50px);
position: fixed;
top: 50px;
right: 250px;
}
.right-sidebar {
width: 240px;
height: calc(100vh - 50px);
position: fixed;
right: -260px;
top: 50px;
}
.info-box {
margin-bottom: 20px;
}
.card {
margin-bottom: 20px;
}
.card .card-header {
padding: 0.5rem;
}
.card .card-title{
margin-bottom:0.5rem;
}
.card .card-block {
padding: 0.5rem;
}
.btn {
padding: .46875rem 0.25rem;
color : #fff !important;
}
.btn-default, .bg-default{
color : #111 !important;
}
.checkbox label, label.checkbox-inline {
padding-left: 0;
}
.checkbox label input[type=checkbox], label.checkbox-inline input[type=checkbox] {
position: relative;
left: 0;
z-index: -1;
width: 13px;
height: 13px;
margin: 5px 5px 0 0;
overflow: hidden;
pointer-events: none;
opacity: 1;
}
.sidebar .menu .list .header {
background: #eee;
font-size: 12px;
font-weight: bold;
padding: 8px 16px;
}
.breadcrumb {
font-size:0.87rem;
}
.list-group-item{
padding:0.75rem 1rem;
}
.btn:not(.btn-link):not(.btn-circle) span {
position: relative;
top: 0px;
margin-left: 0px;
}
.nav {
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav > li > a {
position: relative;
display: block;
padding: 10px 15px;
}
.nav-tabs > li {
float: left;
margin-bottom: -1px;
}
.nav-tabs li a.active {
color: #000 !important;
border-bottom: 2px solid #2196F3 !important;
}
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
color: #555;
cursor: default;
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: transparent;
}
.nav-tabs > li > a {
margin-right: 2px;
line-height: 1.42857143;
text-decoration:none;
}
.nav-tabs .nav-link {
padding: 0.7286em .8575em;
}
.checkbox label input[type=checkbox], label.checkbox-inline input[type=checkbox] {
opacity:0 !important;
margin-right:15px;
}
/* End Reset Theme */
/* *************************************************** */
.hidden{
display: none !important;
}
/***************** Start Origami CSS *************************/
/* Reset */
.table {
margin-bottom: 0px;
}
select.form-control {
height: inherit !important;
}
.form-horizontal .form-group {
margin-right: 0px !important;
}
.card-columns {
font-size: 18px !important;
}
/* End Reset */
/*
.dining {
min-height:470px;
max-height:570px;
overflow:auto
}
.order-info {
min-height:300px;
max-height:500px;
overflow:auto
}
*/
.others-payment{
line-height:100px;
text-align:center;
color:white;
width:300px;
height:100px;
font-size:18px;
}
.orders-table {
cursor: pointer;
}
.cashier_number{
width: 33%;
height:70px;
line-height:70px;
text-align:center;
background:#54A5AF;
// float:left;
// margin:2px;
font-size:20px;
color:white;
// cursor:pointer;
}
.border-left{
border-left:1px solid #fff;
}
.del_cashier_number{
opacity:0.6,
}
.pay{
width: 98%;
height:211px;
line-height:211px;
text-align:center;
font-size:20px;
color:white;
}
.payment{
height:70px;line-height:70px;
align:center;
color:white;
font-size:16px;
margin-top:5px;
}
.font-12 {
font-size: 12px;
}
.cash-color{
background-color:#80CBC4;
}
.credit-color{
background-color:#FFCCBC;
}
.other-payment-color{
background-color:#E1BEE7;
}
.cashier_number:hover{
background:#A9F5F2;
}
.action-btn {
white-space: normal !important;
height: 60px;
margin-bottom: 5px;
}
.radius-btn {
border-radius:5px;
color:#fff;
background-color:red;
}
.bottom-5 {
margin-bottom: 5px;
}
.fluid {
width: 100%;
}
.style2 {
border-top: 3px double #8c8b8b;
}
.long{
width:49%;
}
.sold {
background-color: red;
}
.paid {
background-color: green;
}
.selected-item {
color: #fff !important;
background-color: blue !important;
}
.selected-account {
color: #fff !important;
background-color: blue !important;
}
/* Reciept Style */
#order-charges-table td {
border-top: none !important;
}
.charges-name {
width: 80%;
text-align: left;
}
.item-name {
width: 60%;
text-align: left;
}
.item-attr {
width: 20%;
text-align: right;
}
.item-attr-edit{
width: 10%;
text-align: left;
}
.display-none{
display: none;
}
.text-white{
color: #fff;
}
/* Colors */
.purple {
background-color:#7a62d3;
}
.orange{
background-color:#FF7F50;
}
.red {
background-color:#ff0000;
}
.green{
background-color: #009900;
}
.orange{
background-color: #FF8C00;
}
.blue{
background-color: blue;
}
/* End Colors */
.left{
margin-left:1px;
}
.bottom{
margin-bottom: 1px;
margin-left:-10px ;
margin-right:-10px;
}
/* Discount */
.discount-item-row {
cursor: pointer;
}
tr.discount-item-row:hover {
background-color: #e3e3e3 !important;
}
.required abbr{
color: red !important;
}
#sxModal {
display: none;
overflow: auto;
width: 100%;
height: 100%;
background-color: #000;
background-color: rgba(0,0,0,0.4);
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1100;
}
#sxModal-Content {
position: relative;
left: 42%;
top: 30%;
background-color: #d9534f;
color: #fff;
text-align: center;
width: 200px;
height: 200px;
padding-top: 5%;
border-radius: 100px;
z-index: 1101;
}
/*Loading gif for payment*/
#loading_wrapper{
position: fixed;
background-color: #C8C8C8 ;
height: 100%;
width: 100%;
left: 0;
opacity: 0.6;
top: 0;
z-index: 9999999;
}
#loading{
position: relative;
height: 100%;
width: 100%;
background-image: url('../../../image/loading-ajax.gif');
background-position: center center;
background-repeat: no-repeat;
opacity: 1;
filter: alpha(opacity=100); /* ie */
-moz-opacity: 1; /* mozilla */
}
/***********************End Origami CSS ************************/
/*----- Order Processing Items -----*/ /*----- Order Processing Items -----*/
.opi_ul { .opi_ul {

View File

@@ -1,10 +1,16 @@
@import "bootstrap"; @import "tether";
@import "font-awesome"; @import "bootstrap/css/bootstrap-material-design.min";
@import "theme"; @import "node-waves/waves";
@import "jquery-ui"; @import "animate-css/animate";
@import "bootstrap-datepicker3"; @import "sweetalert/sweetalert.css";
@import "multi-select/css/multi-select.css";
@import "bootstrap-material-datetimepicker/css/bootstrap-material-datetimepicker";
@import "morrisjs/morris";
@import "BSBMaterial/style";
@import "BSBMaterial/themes/all-themes";
@import "reset";
@import "select2"; @import "select2";
@import "jquery.datetimepicker";
/* Show it is fixed to the top */ /* Show it is fixed to the top */
// body { // body {

View File

@@ -1,16 +1,24 @@
/*
@import "bootstrap"; @import "bootstrap";
@import "font-awesome"; @import "font-awesome";
@import "theme"; @import "theme";
@import "jquery-ui"; @import "jquery-ui";
@import "bootstrap-datepicker3"; @import "bootstrap-datepicker3";
@import "jquery.datetimepicker"; @import "jquery.datetimepicker";
*/
@import "tether";
@import "bootstrap/css/bootstrap-material-design.min";
@import "node-waves/waves";
@import "animate-css/animate";
@import "sweetalert/sweetalert.css";
@import "multi-select/css/multi-select.css";
@import "bootstrap-material-datetimepicker/css/bootstrap-material-datetimepicker";
@import "morrisjs/morris";
@import "BSBMaterial/style";
@import "BSBMaterial/themes/all-themes";
@import "reset";
/* Show it is fixed to the top */
// body {
// min-height: 75rem;
// padding-top: 4.5rem;
// }
/* Reset */ /* Reset */
.table { .table {
@@ -237,11 +245,8 @@ tr.discount-item-row:hover {
color: red !important; color: red !important;
} }
/* Jquery Confirm */ .border-left{
border-left:1px solid #fff;
.jconfirm-box-container{
margin-left:-40px !important;
margin-top:-40px !important;
} }
#sxModal { #sxModal {

View File

@@ -0,0 +1,182 @@
/* Start Reset Theme */
.col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col-auto, .col-lg, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-auto, .col-md, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md-auto, .col-sm, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm-auto, .col-xl, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-auto {
padding-left: 10px;
padding-right: 10px;
}
.col-lg-1, .col-md-1, .col-sm-1,col-xl-1{
padding-left: 5px ;
padding-right: 5px ;
}
.navbar {
padding: 0.1rem 1rem;
}
.navbar-header {
padding: 0px;
}
.navbar-brand {
padding-top: 0rem;
padding-bottom: 0rem;
}
.navbar-brand-txt {
position: relative;
top: 5px;
}
.navbar-right a {
color: #fff;
}
.navbar-right a.dropdown-toggle {
position: relative;
top: -5px;
}
.dropdown-menu {
margin-top: 0px !important;
}
.switch label {
color: #070707 !important;
}
.ls-closed .bars:after, .ls-closed .bars:before {
position: absolute;
top: 8px;
}
section.content {
margin: 70px 15px 0 225px;
}
.sidebar {
width: 210px;
height: calc(100vh - 50px);
position: fixed;
top: 50px;
right: 250px;
}
.right-sidebar {
width: 240px;
height: calc(100vh - 50px);
position: fixed;
right: -260px;
top: 50px;
}
.info-box {
margin-bottom: 20px;
}
.card {
margin-bottom: 20px;
}
.card .card-header {
padding: 0.5rem;
}
.card .card-title{
margin-bottom:0.5rem;
}
.card .card-block {
padding: 0.5rem;
}
.btn {
padding: .46875rem 0.25rem;
color : #fff !important;
}
.btn-default, .bg-default{
color : #111 !important;
}
.checkbox label, label.checkbox-inline {
padding-left: 0;
}
.checkbox label input[type=checkbox], label.checkbox-inline input[type=checkbox] {
position: relative;
left: 0;
z-index: -1;
width: 13px;
height: 13px;
margin: 5px 5px 0 0;
overflow: hidden;
pointer-events: none;
opacity: 1;
}
.sidebar .menu .list .header {
background: #eee;
font-size: 12px;
font-weight: bold;
padding: 8px 16px;
}
.breadcrumb {
font-size:0.87rem;
}
.list-group-item{
padding:0.75rem 1rem;
}
.btn:not(.btn-link):not(.btn-circle) span {
position: relative;
top: 0px;
margin-left: 0px;
}
.nav {
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav > li > a {
position: relative;
display: block;
padding: 10px 15px;
}
.nav-tabs > li {
float: left;
margin-bottom: -1px;
}
.nav-tabs li a.active {
color: #000 !important;
border-bottom: 2px solid #2196F3 !important;
}
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
color: #555;
cursor: default;
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: transparent;
}
.nav-tabs > li > a {
margin-right: 2px;
line-height: 1.42857143;
text-decoration:none;
}
.nav-tabs .nav-link {
padding: 0.7286em .8575em;
}
.checkbox label input[type=checkbox], label.checkbox-inline input[type=checkbox] {
opacity:0 !important;
margin-right:15px;
}
.hidden{
display: none !important;
}
/* End Reset Theme */
/* *************************************************** */

View File

@@ -12,6 +12,7 @@ class ApplicationController < ActionController::Base
#all token authentication must be done here #all token authentication must be done here
#response format must be set to JSON #response format must be set to JSON
#change locallization
def set_locale def set_locale
I18n.locale = params[:locale] || I18n.default_locale I18n.locale = params[:locale] || I18n.default_locale
end end

View File

@@ -10,6 +10,16 @@ class BaseCrmController < ActionController::Base
redirect_to root_path redirect_to root_path
end end
#change locallization
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
# RESTful url for localize
def default_url_options
{ locale: I18n.locale }
end
def current_user def current_user
@current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token] @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
end end

View File

@@ -10,6 +10,16 @@ class BaseOqsController < ActionController::Base
redirect_to root_path redirect_to root_path
end end
#change locallization
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
# RESTful url for localize
def default_url_options
{ locale: I18n.locale }
end
def current_user def current_user
@current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token] @current_user ||= Employee.find_by_token_session(session[:session_token]) if session[:session_token]
end end

View File

@@ -1,4 +1,4 @@
class Crm::BookingsController < ApplicationController class Crm::BookingsController < BaseCrmController
load_and_authorize_resource load_and_authorize_resource
def update_booking def update_booking
booking = Booking.find(params[:booking_id]) booking = Booking.find(params[:booking_id])

View File

@@ -1,4 +1,4 @@
class Crm::CustomersController < ApplicationController #BaseCrmController class Crm::CustomersController < BaseCrmController
load_and_authorize_resource except: [:create] load_and_authorize_resource except: [:create]
before_action :set_crm_customer, only: [:show, :edit, :update, :destroy] before_action :set_crm_customer, only: [:show, :edit, :update, :destroy]

View File

@@ -1,4 +1,4 @@
class Crm::DiningQueuesController < ApplicationController #BaseCrmController class Crm::DiningQueuesController < BaseCrmController
load_and_authorize_resource load_and_authorize_resource
before_action :set_dining_queue, only: [:show, :edit, :update, :destroy] before_action :set_dining_queue, only: [:show, :edit, :update, :destroy]

View File

@@ -1,4 +1,4 @@
class Crm::HomeController < ApplicationController class Crm::HomeController < BaseCrmController
def index def index
@booking = Booking.all @booking = Booking.all

View File

@@ -1,4 +1,4 @@
class Inventory::InventoryController < ApplicationController#BaseInventoryController class Inventory::InventoryController < BaseInventoryController
def index def index
@products = InventoryDefinition.all.active.order('created_at desc') @products = InventoryDefinition.all.active.order('created_at desc')

View File

@@ -1,4 +1,4 @@
class Inventory::InventoryDefinitionsController < ApplicationController#BaseInventoryController class Inventory::InventoryDefinitionsController < BaseInventoryController
before_action :set_inventory_definition, only: [:show, :edit, :update, :destroy] before_action :set_inventory_definition, only: [:show, :edit, :update, :destroy]
# GET /inventory_definitions # GET /inventory_definitions

View File

@@ -1,4 +1,4 @@
class Inventory::StockCheckItemsController < ApplicationController#BaseInventoryController class Inventory::StockCheckItemsController < BaseInventoryController
before_action :set_stock_check_item, only: [:show, :edit, :update, :destroy] before_action :set_stock_check_item, only: [:show, :edit, :update, :destroy]
# GET /stock_check_items # GET /stock_check_items

View File

@@ -1,4 +1,4 @@
class Inventory::StockChecksController < ApplicationController#BaseInventoryController class Inventory::StockChecksController < BaseInventoryController
def index def index
@check = StockCheck.new @check = StockCheck.new
@inventory_definitions = InventoryDefinition.active.all @inventory_definitions = InventoryDefinition.active.all

View File

@@ -1,4 +1,4 @@
class Oqs::EditController < ApplicationController#BaseOqsController class Oqs::EditController < BaseOqsController
def index def index
assigned_item_id = params[:id] assigned_item_id = params[:id]
assigned_item = AssignedOrderItem.find(assigned_item_id) assigned_item = AssignedOrderItem.find(assigned_item_id)

View File

@@ -1,4 +1,4 @@
class Oqs::HomeController < ApplicationController#BaseOqsController class Oqs::HomeController < BaseOqsController
def index def index
@queue_stations = OrderQueueStation.all @queue_stations = OrderQueueStation.all

View File

@@ -1,4 +1,4 @@
class Origami::CardPaymentsController < ApplicationController #BaseOrigamiController class Origami::CardPaymentsController < BaseOrigamiController
def index def index
@membership_rebate_balance = 0 @membership_rebate_balance = 0
@membership_id = 0 @membership_id = 0

View File

@@ -1,4 +1,4 @@
class Origami::CashInsController < ApplicationController #BaseOrigamiController class Origami::CashInsController < BaseOrigamiController
def new def new
end end

View File

@@ -1,4 +1,4 @@
class Origami::CreditPaymentsController < ApplicationController #BaseOrigamiController class Origami::CreditPaymentsController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]

View File

@@ -1,4 +1,4 @@
class Origami::CustomersController < ApplicationController #BaseOrigamiController class Origami::CustomersController < BaseOrigamiController
load_and_authorize_resource load_and_authorize_resource
def index def index
end end

View File

@@ -1,4 +1,4 @@
class Origami::DiscountsController < ApplicationController #BaseOrigamiController class Origami::DiscountsController < BaseOrigamiController
authorize_resource :class => false authorize_resource :class => false
#discount page show from origami index with selected order #discount page show from origami index with selected order

View File

@@ -1,4 +1,4 @@
class Origami::HomeController < ApplicationController #BaseOrigamiController class Origami::HomeController < BaseOrigamiController
before_action :set_dining, only: [:show] before_action :set_dining, only: [:show]
def index def index

View File

@@ -1,4 +1,4 @@
class Origami::InDutiesController < ApplicationController #BaseOrigamiController class Origami::InDutiesController < BaseOrigamiController
before_action :set_in_duty, only: %i[show edit update edit_in_duty update_for_in_duty destroy destroy_in_duty] before_action :set_in_duty, only: %i[show edit update edit_in_duty update_for_in_duty destroy destroy_in_duty]
# GET /in_duties # GET /in_duties

View File

@@ -1,4 +1,4 @@
class Origami::JcbController < ApplicationController #BaseOrigamiController class Origami::JcbController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]

View File

@@ -1,4 +1,4 @@
class Origami::MasterController < ApplicationController #BaseOrigamiController class Origami::MasterController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]

View File

@@ -1,4 +1,4 @@
class Origami::MoveroomController < ApplicationController #BaseOrigamiController class Origami::MoveroomController < BaseOrigamiController
authorize_resource :class => false authorize_resource :class => false

View File

@@ -1,4 +1,4 @@
class Origami::MovetableController < ApplicationController #BaseOrigamiController class Origami::MovetableController < BaseOrigamiController
authorize_resource :class => false authorize_resource :class => false

View File

@@ -1,4 +1,4 @@
class Origami::MpuController < ApplicationController #BaseOrigamiController class Origami::MpuController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]

View File

@@ -1,4 +1,4 @@
class Origami::OrdersController < ApplicationController #BaseOrigamiController class Origami::OrdersController < BaseOrigamiController
def show def show
@tables = Table.all.active.order('status desc') @tables = Table.all.active.order('status desc')
@rooms = Room.all.active.order('status desc') @rooms = Room.all.active.order('status desc')

View File

@@ -1,4 +1,4 @@
class Origami::OtherChargesController < ApplicationController #BaseOrigamiController class Origami::OtherChargesController < BaseOrigamiController
authorize_resource :class => false authorize_resource :class => false
def index def index

View File

@@ -1,4 +1,4 @@
class Origami::OthersPaymentsController < ApplicationController #BaseOrigamiController class Origami::OthersPaymentsController < BaseOrigamiController
def index def index
@membership_rebate_balance = 0 @membership_rebate_balance = 0
@sale_id = params[:sale_id] @sale_id = params[:sale_id]

View File

@@ -1,4 +1,4 @@
class Origami::PaymentsController < ApplicationController #BaseOrigamiController class Origami::PaymentsController < BaseOrigamiController
authorize_resource :class => false authorize_resource :class => false
def index def index
end end

View File

@@ -1,4 +1,4 @@
class Origami::ProductCommissionsController < ApplicationController #BaseOrigamiController class Origami::ProductCommissionsController < BaseOrigamiController
before_action :set_product_commission, only: [:show, :edit, :update, :destroy] before_action :set_product_commission, only: [:show, :edit, :update, :destroy]
# GET /product_commissions # GET /product_commissions

View File

@@ -1,4 +1,4 @@
class Origami::RedeemPaymentsController < ApplicationController #BaseOrigamiController class Origami::RedeemPaymentsController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]
payment_method = params[:payment_method] payment_method = params[:payment_method]

View File

@@ -1,4 +1,4 @@
class Origami::RoomInvoicesController < ApplicationController #BaseOrigamiController class Origami::RoomInvoicesController < BaseOrigamiController
def index def index
@room = DiningFacility.find(params[:room_id]) @room = DiningFacility.find(params[:room_id])
puts "room bookig lenght" puts "room bookig lenght"

View File

@@ -1,4 +1,4 @@
class Origami::RoomsController < ApplicationController #BaseOrigamiController class Origami::RoomsController < BaseOrigamiController
def index def index
@tables = Table.all.active.order('status desc') @tables = Table.all.active.order('status desc')
@rooms = Room.all.active.order('status desc') @rooms = Room.all.active.order('status desc')

View File

@@ -1,4 +1,4 @@
class Origami::SaleEditController < ApplicationController #BaseOrigamiController class Origami::SaleEditController < BaseOrigamiController
authorize_resource class: false authorize_resource class: false
# Index for sale item void OR edit # Index for sale item void OR edit
def edit def edit

View File

@@ -1,4 +1,4 @@
class Origami::TableInvoicesController < ApplicationController #BaseOrigamiController class Origami::TableInvoicesController < BaseOrigamiController
def index def index
@table = DiningFacility.find(params[:table_id]) @table = DiningFacility.find(params[:table_id])
puts "table bookig lenght" puts "table bookig lenght"

View File

@@ -1,4 +1,4 @@
class Origami::VisaController < ApplicationController #BaseOrigamiController class Origami::VisaController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]

View File

@@ -1,4 +1,4 @@
class Origami::VoucherController < ApplicationController #BaseOrigamiController class Origami::VoucherController < BaseOrigamiController
def index def index
@sale_id = params[:sale_id] @sale_id = params[:sale_id]

View File

@@ -70,6 +70,6 @@ class Settings::CashierTerminalsController < ApplicationController
# Never trust parameters from the scary internet, only allow the white list through. # Never trust parameters from the scary internet, only allow the white list through.
def settings_cashier_terminal_params def settings_cashier_terminal_params
params.require(:cashier_terminal).permit(:name, :is_active, :is_currently_login, :auto_print_receipt, :printer_name, :header, :footer, :font, :font_size, :show_tax, :show_cashier, :show_guest_info) params.require(:cashier_terminal).permit(:name, :is_active, :is_currently_login, :auto_print_receipt, :printer_name, :header, :footer, :font, :font_size, :show_tax, :show_cashier, :show_guest_info,{ zone_ids: [] })
end end
end end

View File

@@ -73,11 +73,6 @@ class Settings::OrderQueueStationsController < ApplicationController
# Never trust parameters from the scary internet, only allow the white list through. # Never trust parameters from the scary internet, only allow the white list through.
def settings_order_queue_station_params def settings_order_queue_station_params
# <<<<<<< HEAD
# params.require(:order_queue_station).permit(:station_name, :is_active, :auto_print, :processing_items, :print_copy, :printer_name, :font_size, :cut_per_item, :use_alternate_name, :created_by)
# =======
# Don't Know { zone_ids: [] }
params.require(:order_queue_station).permit(:station_name, :is_active, :processing_items, :auto_print, :print_copy, :printer_name, :font_size, :cut_per_item, :use_alternate_name, :created_by,{ zone_ids: [] }) params.require(:order_queue_station).permit(:station_name, :is_active, :processing_items, :auto_print, :print_copy, :printer_name, :font_size, :cut_per_item, :use_alternate_name, :created_by,{ zone_ids: [] })
# >>>>>>> b093a993ba002c92659bbb34338c55c031c11d87
end end
end end

View File

@@ -1,2 +1,4 @@
class CashierTerminal < ApplicationRecord class CashierTerminal < ApplicationRecord
has_many :cashier_terminal_by_zones
has_many :zones, through: :cashier_terminal_by_zones
end end

View File

@@ -0,0 +1,4 @@
class CashierTerminalByZone < ApplicationRecord
belongs_to :zone
belongs_to :cashier_terminal
end

View File

@@ -2,6 +2,7 @@ class SeedGenerator < ApplicationRecord
# Generate ID for Tables # Generate ID for Tables
def self.generate_id(model, prefix) def self.generate_id(model, prefix)
seed = SeedGenerator.find_by_model(model) seed = SeedGenerator.find_by_model(model)
next_no = seed.next
new_receipt_no = 0 new_receipt_no = 0
if (seed.nil?) if (seed.nil?)
@@ -9,18 +10,33 @@ class SeedGenerator < ApplicationRecord
seed.model = model seed.model = model
new_receipt_no = seed.next new_receipt_no = seed.next
seed.save seed.save
else else
current_no = seed.next # current_no = seed.next
seed.next = seed.next + seed.increase_by # seed.next = seed.next + seed.increase_by
seed.current = current_no # seed.current = current_no
seed.save # seed.save
cur_val, next_val = self.update_seed(model, seed.next, seed.increase_by)
if next_no == cur_val
puts "SSS"
puts next_val
cur_val2, next_val2 = self.update_seed(model, next_val, seed.increase_by)
puts next_val2
padding_len = 15 - prefix.length
saleOrderId = prefix +"-"+ cur_val2.to_s.to_s.rjust((14-prefix.length)+1,'0')
puts saleOrderId
return saleOrderId
end
padding_len = 15 - prefix.length
saleOrderId = prefix +"-"+ cur_val.to_s.to_s.rjust((14-prefix.length)+1,'0')
return saleOrderId
end end
padding_len = 15 - prefix.length padding_len = 15 - prefix.length
saleOrderId = prefix +"-"+ seed.current.to_s.to_s.rjust((14-prefix.length)+1,'0') saleOrderId = prefix +"-"+ seed.current.to_s.to_s.rjust((14-prefix.length)+1,'0')
return saleOrderId return saleOrderId
end end
# Generate Receipt No # Generate Receipt No
@@ -71,4 +87,24 @@ class SeedGenerator < ApplicationRecord
next_code = prefix + seed.current.to_s.to_s.rjust((count)+1,'0') next_code = prefix + seed.current.to_s.to_s.rjust((count)+1,'0')
return next_code return next_code
end end
def self.update_seed(model, current, inc)
cur_val = 0
next_val = 0
nex = current + inc
update_sql = "update seed_generators set current= #{current}, next= #{nex} where model='#{model}';";
select_sql = "select * from seed_generators where model='#{model}';"
update_result = ActiveRecord::Base.connection.execute(update_sql);
select_result = ActiveRecord::Base.connection.execute(select_sql);
select_result.each do |row|
p row
cur_val = row [3]
next_val = row[4]
end
return cur_val, next_val
end
end end

View File

@@ -3,6 +3,7 @@ class Zone < ApplicationRecord
has_many :tables, dependent: :destroy has_many :tables, dependent: :destroy
has_many :rooms, dependent: :destroy has_many :rooms, dependent: :destroy
has_many :order_queue_stations has_many :order_queue_stations
has_many :cashier_terminals
# validations # validations
validates_presence_of :name, :created_by validates_presence_of :name, :created_by

View File

@@ -1,15 +1,15 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="page-header"> <div class="page-header">
<ul class="breadcrumb"> <ul class="breadcrumb">
<li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li>
<li class="breadcrumb-item active">CRM</li> <li class="breadcrumb-item active">CRM</li>
<!-- <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> --> <!-- <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li> -->
<span class="float-right"> <span class="float-right">
<%= link_to 'Back', dashboard_path %> <%= link_to 'Back', dashboard_path %>
</span> </span>
</ul> </ul>
</div>
</div> </div>
<div class="row clearfix"> <div class="row clearfix">
<div class="col-lg-8 col-md-8 col-sm-8"> <div class="col-lg-8 col-md-8 col-sm-8">
<!-- <div class="main-box-body clearfix"> --> <!-- <div class="main-box-body clearfix"> -->
@@ -103,7 +103,6 @@
</div> --> </div> -->
</div> </div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$(function() { $(function() {

View File

@@ -1,46 +1,43 @@
<div class="page-header"> <div class="container-fluid">
<ul class="breadcrumb"> <div class="page-header">
<li><a href="<%= %>">Home</a></li> <ul class="breadcrumb">
<li>Queue</li> <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li>
<li>Assign Queue <%=@queue.queue_no%></li> <li class="breadcrumb-item"><a href="<%= crm_dining_queues_path %>">Queue</a></li>
<li class="breadcrumb-item active">Assign Queue <%=@queue.queue_no%></li>
</ul> <span class="float-right">
<%= link_to 'Back', dashboard_path %>
</span>
</ul>
</div>
</div> </div>
<div class="row"> <div class="row">
<!-- Column One --> <!-- Column One -->
<div class="col-lg-11 col-md-11 col-sm-11"> <div class="col-lg-12 col-md-12 col-sm-12">
<div id="custom-slimscroll">
<div class="tab-content" style="max-height:670px; overflow:auto"> <div class="tab-content">
<!--- Panel 1 - Table Orders -->
<!--- Panel 1 - Table Orders --> <div class="active" id="tables" role="tabpanel">
<div class="active" id="tables" role="tabpanel"> <div class="tab-pane" id="rooms" role="tabpanel">
<div class="tab-pane" id="rooms" role="tabpanel"> <div class="card-columns" style="padding-top:10px; column-gap: 2.2rem;">
<div class="card-columns" style="padding-top:10px; column-gap: 2.2rem;"> <% @i =0 %>
<% @i =0 %> <% DiningFacility.all.each do |table| %>
<% DiningFacility.all.each do |table| %> <div class="card assign_table <%= table.status=="available" ? "green" : "red"%>" data-id="<%= table.id %>">
<div class="card assign_table <%= table.status=="available" ? "green" : "red"%>" data-id="<%= table.id %>"> <div class="card-block">
<div class="card-block"> <p class="hidden queue-id"><%= @queue.id %></p>
<p class="hidden queue-id"><%= @queue.id %></p> <p class="hidden queue-status"><%= table.status %></p>
<p class="hidden queue-status"><%= table.status %></p> <p style="text-align: center"><%= table.name %></p>
<p style="text-align: center"><%= table.name %></p> <p style="text-align: center">Seat : <%= table.seater %></p>
<p style="text-align: center">Seat : <%= table.seater %></p> </div>
</div> </div>
<% end %>
</div> </div>
</div>
<% end %> </div>
</div>
</div>
</div> </div>
</div>
</div> </div>
</div> </div>
<div class="col-lg-1 col-md-1 col-sm-1">
<br>
<a href="<%= crm_dining_queues_path%>" class="btn btn-primary">
<i class="fa fa-arrow-left fa-lg"></i> Back
</a>
</div>
</div>
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.2.0/jquery-confirm.min.css"> <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.2.0/jquery-confirm.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.2.0/jquery-confirm.min.js"></script> --> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-confirm/3.2.0/jquery-confirm.min.js"></script> -->

View File

@@ -1,4 +1,7 @@
<%= simple_form_for([:inventory, @inventory_definition]) do |f| %> <div class="row">
<div class="col-xs-12 col-sm-12 col-md-9 col-lg-9">
<div class="p-l-10">
<%= simple_form_for([:inventory, @inventory_definition]) do |f| %>
<%= f.error_notification %> <%= f.error_notification %>
<div class="form-inputs"> <div class="form-inputs">
@@ -45,12 +48,25 @@
</div> </div>
<div class="form-actions"> <div class="form-actions">
<%= link_to 'Back', inventory_path, class: 'btn bg-default waves-effect' %> <%= f.submit 'Submit', class: 'btn bg-blue waves-effect' %>
<%= f.button :submit, class: 'btn bg-blue wave' %>
</div> </div>
<% end %> <% end %>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-3 col-lg-3">
<div class="card">
<div class="body">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
</div>
</div>
</div>
</div>
<script> <script>
$(document).ready(function () { $(document).ready(function () {

View File

@@ -1,12 +1,12 @@
<div class="container-fluid"> <div class="page-header">
<div class="col"> <ol class="breadcrumb">
<div class="page-header"> <li class="breadcrumb-item"><a href="<%= dashboard_path %>">Home</a></li>
<ul class="breadcrumb"> <li class="breadcrumb-item"><a href="<%= inventory_path %>">Product Inventory</a></li>
<li><a href="<%= root_path %>">Home</a></li> <li class="breadcrumb-item active">Edit</li>
<li><a href="<%= inventory_path %>">Product Inventory</a></li> <span class="float-right">
<li>New</li> <%= link_to t('.back', :default => t("views.btn.back")), inventory_path %>
</ul> </span>
</div> </ol>
<%= render 'form', inventory: @inventory_definition %>
</div> </div>
</div> <br>
<%= render 'form', inventory: @inventory_definition %>

View File

@@ -1,34 +1,63 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<meta name="description" content=""/>
<meta name="author" content=""/>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title>SmartSales : Restaurant</title> <title>SmartSales : Restaurant</title>
<%= csrf_meta_tags %> <%= csrf_meta_tags %>
<!-- Favicon-->
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<%= stylesheet_link_tag 'CRM', media: 'all', 'data-turbolinks-track': 'reload' %> <!-- Google Fonts -->
<%= javascript_include_tag 'CRM', 'data-turbolinks-track': 'reload' %> <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,cyrillic-ext" rel="stylesheet" type="text/css">
<%= stylesheet_link_tag 'jquery-confirm', media: 'all', 'data-turbolinks-track': 'reload' %> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" type="text/css">
<%= javascript_include_tag 'jquery-confirm', 'data-turbolinks-track': 'reload' %>
</head>
<body> <%= stylesheet_link_tag 'CRM', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= render 'layouts/header_crm' %> <%= javascript_include_tag 'CRM', 'data-turbolinks-track': 'reload' %>
<div class="container-fluid"> </head>
<% flash.each do |type, message| %>
<div class="alert-danger fade in">
<button class="close" aria-hidden="true" data-dismiss="alert" type="button">×</button>
<% if !flash["errors"]%>
<%=message%>
<% end %>
</div>
<% end %>
<%= yield %>
<body class="theme-red">
<!-- Page Loader -->
<div class="page-loader-wrapper">
<div class="loader">
<div class="preloader">
<div class="spinner-layer pl-blue">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
<p>Please wait...</p>
</div>
</div> </div>
</body> <!-- #END# Page Loader -->
</html> <!-- Overlay For Sidebars -->
<div class="overlay"></div>
<!-- #END# Overlay For Sidebars -->
<%= render 'layouts/header' %>
<section>
<%= render 'layouts/left_sidebar' %>
<%= render 'layouts/right_sidebar' %>
</section>
<!-- Main Content -->
<section class="content">
<% flash.each do |type, message| %>
<div class="alert-danger fade in">
<button class="close" aria-hidden="true" data-dismiss="alert" type="button">×</button>
<% if !flash["errors"]%>
<%=message%>
<% end %>
</div>
<% end %>
<%= yield %>
</section>
</body>
</html>

View File

@@ -1,28 +1,58 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<meta name="description" content=""/>
<meta name="author" content=""/>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title>SmartSales : Restaurant</title> <title>SmartSales : Restaurant</title>
<%= csrf_meta_tags %> <%= csrf_meta_tags %>
<!-- Favicon-->
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<%= stylesheet_link_tag 'OQS', media: 'all', 'data-turbolinks-track': 'reload' %> <!-- Google Fonts -->
<%= javascript_include_tag 'OQS', 'data-turbolinks-track': 'reload' %> <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,cyrillic-ext" rel="stylesheet" type="text/css">
</head> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" type="text/css">
<body> <%= stylesheet_link_tag 'OQS', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= render 'layouts/header' %> <%= javascript_include_tag 'OQS', 'data-turbolinks-track': 'reload' %>
<div class="container-fluid"> </head>
<% flash.each do |type, message| %>
<div class="alert fade in"> <body class="theme-red">
<button class="close" aria-hidden="true" data-dismiss="alert" type="button">×</button> <!-- Page Loader -->
<%= message %> <div class="page-loader-wrapper">
</div> <div class="loader">
<% end %> <div class="preloader">
<%= yield %> <div class="spinner-layer pl-blue">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
<p>Please wait...</p>
</div>
</div> </div>
</body> <!-- #END# Page Loader -->
</html> <!-- Overlay For Sidebars -->
<div class="overlay"></div>
<!-- #END# Overlay For Sidebars -->
<%= render 'layouts/header' %>
<section>
<%= render 'layouts/left_sidebar' %>
<%= render 'layouts/right_sidebar' %>
</section>
<!-- Main Content -->
<section class="content">
<% flash.each do |type, message| %>
<div class="alert fade in">
<button class="close" aria-hidden="true" data-dismiss="alert" type="button">×</button>
<%= message %>
</div>
<% end %>
<%= yield %>
</section>
</body>

View File

@@ -48,10 +48,18 @@
</a> </a>
</li> </li>
<li> <li>
<a href="<%= crm_customers_path %>"> <a href="javascript:void(0);" class="menu-toggle">
<i class="material-icons">group</i> <i class="material-icons">widgets</i>
<span><%= t :crm %></span> <span><%= t :crm %></span>
</a> </a>
<ul class="ml-menu">
<li>
<a href="<%= crm_customers_path %>"><%= t :customer %></a>
</li>
<li>
<a href="<%= crm_dining_queues_path %>"><%= t :queue %></a>
</li>
</ul>
</li> </li>
<li> <li>
<a href="<%= inventory_path %>"> <a href="<%= inventory_path %>">

View File

@@ -1,24 +1,53 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<meta name="description" content=""/>
<meta name="author" content=""/>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title>SmartSales : Restaurant</title> <title>SmartSales : Restaurant</title>
<%= csrf_meta_tags %> <%= csrf_meta_tags %>
<!-- Favicon-->
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,cyrillic-ext" rel="stylesheet" type="text/css">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" type="text/css">
<%= stylesheet_link_tag 'inventory_definitions', media: 'all', 'data-turbolinks-track': 'reload' %> <%= stylesheet_link_tag 'inventory_definitions', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'inventory', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_link_tag 'jquery-confirm', media: 'all', 'data-turbolinks-track': 'reload' %> </head>
<%= javascript_include_tag 'jquery-confirm', 'data-turbolinks-track': 'reload' %>
</head>
<body> <body class="theme-red">
<%= render 'layouts/header_inventory' %> <!-- Page Loader -->
<div class="container-fluid"> <div class="page-loader-wrapper">
<% flash.each do |type, message| %> <div class="loader">
<div class="preloader">
<div class="spinner-layer pl-blue">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
<p>Please wait...</p>
</div>
</div>
<!-- #END# Page Loader -->
<!-- Overlay For Sidebars -->
<div class="overlay"></div>
<!-- #END# Overlay For Sidebars -->
<%= render 'layouts/header' %>
<section>
<%= render 'layouts/left_sidebar' %>
<%= render 'layouts/right_sidebar' %>
</section>
<!-- Main Content -->
<section class="content">
<% flash.each do |type, message| %>
<% if !flash["errors"]%> <% if !flash["errors"]%>
<div class="alert fade in"> <div class="alert fade in">
<button class="close" aria-hidden="true" data-dismiss="alert" type="button">×</button> <button class="close" aria-hidden="true" data-dismiss="alert" type="button">×</button>
@@ -26,9 +55,9 @@
</div> </div>
<% end %> <% end %>
<% end %> <% end %>
<%= yield %> <%= yield %>
</section>
</body>
</div> </html>
</body>
</html>

View File

@@ -1,23 +1,52 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<meta name="description" content=""/>
<meta name="author" content=""/>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title>SmartSales : Restaurant</title> <title>SmartSales : Restaurant</title>
<%= csrf_meta_tags %> <%= csrf_meta_tags %>
<!-- Favicon-->
<link rel="icon" href="/favicon.ico" type="image/x-icon">
<%= stylesheet_link_tag 'origami', media: 'all', 'data-turbolinks-track': 'reload' %> <!-- Google Fonts -->
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> <link href="https://fonts.googleapis.com/css?family=Roboto:400,700&subset=latin,cyrillic-ext" rel="stylesheet" type="text/css">
<%= stylesheet_link_tag 'jquery-confirm', media: 'all', 'data-turbolinks-track': 'reload' %> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" type="text/css">
<%= javascript_include_tag 'jquery-confirm', 'data-turbolinks-track': 'reload' %>
</head>
<body> <%= stylesheet_link_tag 'origami', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= render 'layouts/header_orgiami' %> <%= javascript_include_tag 'origami', 'data-turbolinks-track': 'reload' %>
<div class="container-fluid"> </head>
<body class="theme-red">
<!-- Page Loader -->
<div class="page-loader-wrapper">
<div class="loader">
<div class="preloader">
<div class="spinner-layer pl-blue">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
<p>Please wait...</p>
</div>
</div>
<!-- #END# Page Loader -->
<!-- Overlay For Sidebars -->
<div class="overlay"></div>
<!-- #END# Overlay For Sidebars -->
<%= render 'layouts/header' %>
<section>
<%= render 'layouts/left_sidebar' %>
<%= render 'layouts/right_sidebar' %>
</section>
<!-- Main Content -->
<section class="content">
<% flash.each do |type, message| %> <% flash.each do |type, message| %>
<% if !flash["errors"]%> <% if !flash["errors"]%>
<div class="alert fade in"> <div class="alert fade in">
@@ -27,8 +56,7 @@
<% end %> <% end %>
<% end %> <% end %>
<%= yield %> <%= yield %>
</section>
</div> </body>
</body>
</html>

View File

@@ -8,6 +8,8 @@
<%= f.input :is_active %> <%= f.input :is_active %>
<%= f.input :is_currently_login %> <%= f.input :is_currently_login %>
<%= f.input :auto_print_receipt %> <%= f.input :auto_print_receipt %>
<%= f.label "Select Zones", :class => 'control-label' %>
<%= f.collection_check_boxes :zone_ids , Zone.all, :id, :name , :class => 'checkbox'%>
<%= f.input :printer_name %> <%= f.input :printer_name %>
<%= f.input :font %> <%= f.input :font %>
<%= f.input :font_size %> <%= f.input :font_size %>

View File

@@ -17,7 +17,7 @@ Rails.application.config.assets.precompile += %w( login.js )
# --- Waiter/ Cashier - Orgiami ---- # --- Waiter/ Cashier - Orgiami ----
Rails.application.config.assets.precompile += %w( origami.css ) Rails.application.config.assets.precompile += %w( origami.css )
# Rails.application.config.assets.precompile += %w( origami.js ) Rails.application.config.assets.precompile += %w( origami.js )
# -- Order Queue Station ----- # -- Order Queue Station -----
Rails.application.config.assets.precompile += %w( OQS.css ) Rails.application.config.assets.precompile += %w( OQS.css )
Rails.application.config.assets.precompile += %w( OQS.js ) Rails.application.config.assets.precompile += %w( OQS.js )
@@ -48,4 +48,5 @@ Rails.application.config.assets.precompile += %w( popper.min.js )
# --- Inventory Definition ---- # --- Inventory Definition ----
Rails.application.config.assets.precompile += %w( inventory_definitions.css ) Rails.application.config.assets.precompile += %w( inventory_definitions.css )
Rails.application.config.assets.precompile += %w( inventory.js )

View File

@@ -5,6 +5,8 @@ mm:
oqs: "အမှာစာနေရာများ" oqs: "အမှာစာနေရာများ"
origami: "အရောင်းကောင်တာ" origami: "အရောင်းကောင်တာ"
crm: "စားသုံးသူကြီးကြပ်ရေး" crm: "စားသုံးသူကြီးကြပ်ရေး"
customer: "စားသုံးသူကြီးကြပ်ရေး"
queue: "စားသုံးသူကြီးကြပ်ရေး"
inventory: "ကုန်လှောင်ရုံ" inventory: "ကုန်လှောင်ရုံ"
settings: "သတ်မှတ်ချက်များ" settings: "သတ်မှတ်ချက်များ"
transactions: "အလုပ်ပြီးမြောက်မှု့များ" transactions: "အလုပ်ပြီးမြောက်မှု့များ"

View File

@@ -0,0 +1,10 @@
class CreateCashierTerminalByZones < ActiveRecord::Migration[5.1]
def change
create_table :cashier_terminal_by_zones do |t|
t.references :cashier_terminal, :null => false
t.references :zone, :null => false
t.timestamps
end
end
end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe CashierTerminalByZone, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end