narsil/Tanshu.Accounts.PointOfSale/MainForm.cs
tanshu 69617949bd Important! : Need to update to new schema using SQL Scripts
Important! : This version will not work.  It is pre-alpha and saved in case of catastrophic failure
Refactor: Remove dependency on Fluent Nhibernate.
Refactor: All Primary keys are now Guids.
Refactor: Class Mappings changed from AutoMap to Explicit Mappings.
Breakage: All Cascading is now disabled and entities must be explicitly saved/updated/deleted
Breakage: Auto Commiting is now off and "SaveChanges()" needs to be called on all BIs.
Refactor: Changed the pattern where all relevant db code for an operation is basically in the same function.
Chore: Removed Advance and Payments options.
2014-10-12 15:11:45 +05:30

268 lines
8.8 KiB
C#

using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using Tanshu.Accounts.Contracts;
using Tanshu.Accounts.Entities;
using Tanshu.Accounts.Entities.Auth;
using Tanshu.Accounts.Helpers;
using Tanshu.Accounts.Management;
using Tanshu.Accounts.PointOfSale.Sales;
using Tanshu.Accounts.Repository;
using Tanshu.Common;
using Tanshu.Common.KeyboardControl;
using NHibernate.Tool.hbm2ddl;
namespace Tanshu.Accounts.PointOfSale
{
public enum LoginType
{
Keyboard,
Msr
}
public partial class MainForm : Form
{
public MainForm()
{
//using (var frm = new SplashForm())
// frm.ShowDialog();
SessionManager.Initialize();
//new SchemaExport(SessionManager.Configuration).Create(false, true);
InitializeComponent();
}
private User form_userEvent(object sender, UserEventArgs e)
{
var user = e.User;
if (user == null)
using (var form = new UserForm(null))
form.ShowDialog();
else
using (var form = new UserForm(user.UserID))
form.ShowDialog();
e.Handled = true;
return new User();
}
private void btnLogin_Click(object sender, EventArgs e)
{
LoginUser(LoginType.Keyboard);
}
private void btnSale_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.SALES))
using (var frmSale = new SalesForm(new BillController(null, true)))
frmSale.ShowDialog();
}
private void btnProduct_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.PRODUCTS))
using (var frm = new ProductListForm())
frm.ShowDialog();
}
private void btnProductGroup_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.PRODUCTS))
using (var frm = new ProductGroupListForm())
frm.ShowDialog();
}
private void btnCustomer_Click(object sender, EventArgs e)
{
using (var frm = new CustomersForm(null, ""))
frm.ShowDialog();
}
private void btnExit_Click(object sender, EventArgs e)
{
Close();
}
private void btnCreateUser_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES))
using (var bi = new UserBI())
{
using (var form = new SelectUser(bi.GetFilteredUsers, true))
{
form.UserEvent += form_userEvent;
form.ShowDialog();
}
}
}
private void btnUserRoles_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES))
using (var frm = new AssignUserGroups())
frm.ShowDialog();
}
private void btnChangePassword_Click(object sender, EventArgs e)
{
using (var frm = new ChangePassword(new KeyboardControl()))
frm.ShowDialog();
}
private void btnCashierCheckout_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.CASHIER_CHECKOUT))
using (var frm = new CashierCheckoutForm())
frm.ShowDialog();
}
private void btnSaleAnalysis_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.SALE_ANALYSIS))
using (var frm = new frmSaleAnalysisForm())
frm.ShowDialog();
}
private void btnSaleDetail_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.SALE_DETAIL))
using (var frm = new FrmSaleDetail())
frm.ShowDialog();
}
private void MainForm_Load(object sender, EventArgs e)
{
#if (DEBUG)
MessageBox.Show("This software does not print kots!!!","Debug Mode", MessageBoxButtons.OK , MessageBoxIcon.Exclamation);
#endif
CheckRoles();
}
private void CheckRoles()
{
btnSale.Visible = Session.IsAllowed(RoleConstants.SALES);
btnProduct.Visible = Session.IsAllowed(RoleConstants.PRODUCTS);
btnProductGroup.Visible = Session.IsAllowed(RoleConstants.PRODUCTS);
btnOpenBill.Visible = Session.IsAllowed(RoleConstants.OPEN_BILL);
btnCustomer.Visible = Session.IsAllowed(RoleConstants.CUSTOMERS);
btnCreateUser.Visible = Session.IsAllowed(RoleConstants.SECURITY_MANAGE_USERS);
btnUserRoles.Visible = Session.IsAllowed(RoleConstants.SECURITY_MANAGE_USERS);
btnGroupRoles.Visible = Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES);
btnCashierCheckout.Visible = Session.IsAllowed(RoleConstants.CASHIER_CHECKOUT);
btnSaleAnalysis.Visible = Session.IsAllowed(RoleConstants.SALE_ANALYSIS);
btnSaleDetail.Visible = Session.IsAllowed(RoleConstants.SALE_DETAIL);
btnBillDetails.Visible = Session.IsAllowed(RoleConstants.BILL_DETAILS);
btnVoidOrReprints.Visible = Session.IsAllowed(RoleConstants.VOID_OR_REPRINTED_BILL_REPORT);
btnDiscountReport.Visible = Session.IsAllowed(RoleConstants.VOID_OR_REPRINTED_BILL_REPORT);
btnChangePassword.Visible = Session.IsAuthenticated;
#if (DEBUG)
btnManagement.Visible = true;
#else
btnManagement.Visible = false;
#endif
}
private void btnGroupRoles_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.SECURITY_MANAGE_ROLES))
using (var frm = new AssignGroupRoles())
frm.ShowDialog();
}
private void btnSwipeLogin_Click(object sender, EventArgs e)
{
LoginUser(LoginType.Msr);
}
private void LoginUser(LoginType loginType)
{
ILogin login;
switch (loginType)
{
case LoginType.Keyboard:
login = new KeyboardLogin();
break;
case LoginType.Msr:
login = new MsrLogin();
break;
default:
return;
}
if (!Session.IsAuthenticated)
{
if (login.LoginUser())
{
Text = "Main Menu - User: " + Session.User.Name;
btnLogin.Text = "Logout";
btnSwipeLogin.Visible = false;
}
}
else
{
login.LogoutUser();
Text = "Main Menu - Login";
btnLogin.Text = "Login";
btnSwipeLogin.Visible = true;
}
CheckRoles();
}
private void btnOpenBill_Click(object sender, EventArgs e)
{
if (!Session.IsAllowed(RoleConstants.OPEN_BILL))
return;
var result = InputBox.Show("Bill Number", "0", InputBox_Validating);
if (!result.OK)
return;
Voucher voucher;
using (var bi = new VoucherBI())
voucher = bi.Get(x => x.BillID == result.Text);
if (Session.IsAllowed(RoleConstants.SALES))
using (var frmSale = new SalesForm(new BillController(voucher.VoucherID, true)))
frmSale.ShowDialog();
}
private static void InputBox_Validating(object sender, InputBoxValidatingArgs e)
{
if (Regex.IsMatch(e.Text, @"^\d+-\d\d\d\d")) return;
e.Cancel = true;
e.Message = "Bill No should be in format ##-####";
}
private void btnBillDetails_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.BILL_DETAILS))
using (var frm = new BillDetailsForm())
frm.ShowDialog();
}
private void btnVoidOrReprints_Click(object sender, EventArgs e)
{
if (Session.IsAllowed(RoleConstants.VOID_OR_REPRINTED_BILL_REPORT))
using (var frm = new VoidReprintedForm())
frm.ShowDialog();
}
private void btnDiscountReport_Click(object sender, EventArgs e)
{
using (var frm = new DiscountReportForm())
frm.ShowDialog();
}
private void btnManagement_Click(object sender, EventArgs e)
{
using (var frm = new ManagementForm())
frm.ShowDialog();
}
}
}