Practice Cnet and SQL Server With Accounting System Project Full Source Code C and Database Advanced Level
Practice Cnet and SQL Server With Accounting System Project Full Source Code C and Database Advanced Level
Practice to working
CONTENTS
Chapter 1: Introduction and Preparing
1.1 Ask Questions
1.2 How to learning
1.3 About project
1.3 Download source code project
1.4 Attach Databasse in SQL Server
1.5 Connecting C# Project to AccountSystem database
Chapter 2: Interface of Application
2.1 Form Intro
2.2 Form Login
2.4 Main Interface
Chapter 3: Receive and Payment Module
3.1 Cash received
3.2 Cash payment
3.3 Cash balance
3.4 Rate exchange
Chapter 4: Receivable accounting module
4.1 Customers managerment
4.2 Sales invoices lot
4.3 Sales invoice
4.4 Account Receivable
4.5 Sales price of items
Chapter 5: Liabilities accounting module (Account Payable)
5.1 Suppliers
5.2 Purchasing invoice lot
5.3 Purchasing invoice
5.4 Liabilities (Account Payable)
Chapter 6: Inventory accounting module
6.1 Products managerment
6.2 Import
6.3 Export
6.4 Inventory Controls
6.5 Update product in stock
Chapter 7: Closing accounting book module
7.1 Stransfer openning and closing balance
7.2 Common parameters
7.3 Configurations application
Chapter 8: Reports module
8.1 Design reports
Chapter 9: Permission on Functions
9.1 Functions
9.2 Module
9.3 Permission on function
9.4 Apply permission for functions and menus
Chapter 10: Directories
10.1 Countries Form frmCountries.cs
Chapter11: Download full source code project of this book
Chapter12: Bonus
12.1 Powerful project source code: Read Real Serial number of HDD, SSD ID
without WMI
You can search for a question if that's something that you think
somebody is already asked.
You can ask the question go and give that a click.
You could put a nice title in there.
You can describe what your scenario is.
Example: "Hey, my code isn't working".
Put your learning into action right and ask your questions.
See you in the project.
1.2 How to learning
All code in this book have in the project and database:
+Class, Form…: In the Project
+Procedure, Table…: In the Database
When you see the name of class, let’s get it in the project
When you see the name of Procedure or Table, let’s get it in the Database
Just only follow the code you will easily understand how is the application
run, the action of the code and store procedure.
4- Attach database
☐R-Click on Databases -> Select Attach…
☐Select Add..
☐Select database AccountSystem.mdf in your drive then click OK, OK to
complete
☐Completed
namespace AccountSystem
{
public partial class frmIntro : Form
{
private delegate void CloseSplashForm ();
}
}
}
☐ Form in project
2.2 Form Login
☐ Form Interface:
Add control:
lbHeader, Text = Accounting System
grpNT
grpSQL
label5, text= Authentication
label4, text= User Name
label3, text= Password
rdNT, text= Windows
rdSQL, text= SQL Server
btnOK, text= OK
btnCancel, text= Cancel
btnHelp, text= Help
***
☐ Click on control to get Properties of any control as Name, Text, event..
❖ Event and Code (Looking in attach project): frmLogin.cs
using System;
using System.Windows.Forms;
namespace AccountSystem
{
public partial class frmLogin : Form
{
public frmLogin ()
{
InitializeComponent();
}
private void rdNT_CheckedChanged( object sender, EventArgs e)
{
if (rdNT.Checked)
grpSQL.Enabled = false ;
}
namespace AccountSystem
{
static class ASParameters
{
internal static string welcomeMessage = "Jack Johnson" ;
internal static bool windowsOnly = true ;
internal static string displayUserName = "" ;
internal static string userName = "" ;
internal static string password = "" ;
}
}
}
☐Declare file App.config
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< configuration >
< configSections >
</ configSections >
< connectionStrings >
< add name = " AccountSystem.Properties.Settings.AccountSystemConnectionString " connectionString
= " Server =.\\SQLEXPRESS;Database=Accountsystem;Integrated Security = SSPI " providerName = "
System.Data.SqlClient " />
</ connectionStrings >
< appSettings >
< add key = " Server " value = " (local)\sqlexpress " />
< add key = " Database " value = " AccountSystem " />
< add key = " Timeout " value = "" />
< add key = " PortNo " value = "" />
< add key = " ReportPath " value = " D:\AccountSystem\AccountSystem\Reports\ " />
< add key = " ErrorFilePath " value = "" />
< add key = " ClientSettingsProvider.ServiceUri " value = "" />
</ appSettings >
< system.web >
< membership defaultProvider = " ClientAuthenticationMembershipProvider " >
< providers >
< add name = " ClientAuthenticationMembershipProvider " type = "
System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider,
System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 "
serviceUri = "" />
</ providers >
</ membership >
< roleManager defaultProvider = " ClientRoleProvider " enabled = " true " >
< providers >
< add name = " ClientRoleProvider " type = "
System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35 " serviceUri = "" cacheTimeout = " 86400 " />
</ providers >
</ roleManager >
</ system.web >
</ configuration >
☐Class ASCommon.cs
using System;
namespace AccountSystem
{
}
}
☐Class ASConfiguration.cs
using System;
using Config = System.Configuration.ConfigurationManager;
namespace AccountSystem
{
internal class ASConfig
{
string serverName = "" ;
string databaseName = "" ;
string timeOut = "" ;
string portNo = "" ;
internal ASConfig ()
{
serverName = Convert.ToString(Config.AppSettings[ "Server" ]);
databaseName = Convert.ToString(Config.AppSettings[ "Database" ]);
timeOut = Convert.ToString(Config.AppSettings[ "Timeout" ]);
portNo = Convert.ToString(Config.AppSettings[ "PortNo" ]);
}
}
}
☐Class ASDataProvider.cs
using System;
using System.Data;
using System.Data.SqlClient;
namespace AccountSystem
{
class ASDataProvider
{
#region Constructor
internal ASDataProvider()
{
if (ASSqlServer.sqlConnection.State != ConnectionState.Open)
{
ASSqlServer asSqlServer = new ASSqlServer();
asSqlServer.OpenConnection();
}
}
#endregion
#region Properties
private string errorMessage = "";
public string ErrorMessage
{
get { return errorMessage; }
}
private string commandText = "";
public string CommandText
{
get { return commandText; }
set { commandText = value; }
}
private CommandType commandType = CommandType.Text;
public CommandType CommandType
{
set { commandType = value; }
get { return commandType; }
}
#endregion
#region Define SqlParameter
private void DefineSqlParameter(SqlCommand sqlCommand,
string[] parameterName, object[] parameterValue)
{
SqlParameter sqlParameter;
for (int i = 0; i <parameterName.Length; i++)
{
sqlParameter = new SqlParameter();
sqlParameter.ParameterName =parameterName[i];
sqlParameter.SqlValue =parameterValue[i];
sqlCommand.Parameters.Add(sqlParameter);
}
}
namespace AccountSystem
{
class ASEnum
{
internal enum Status : short
{
All = 2,
Unapproval = 0,
Approved=1
}
internal enum Activate : short
{
All = 2,
Continue = 0,
Discontinued = 1
}
internal struct Item
{
string nameField;
object valueField;
}
}
}
☐Class ASFormatter.cs
using System;
namespace AccountSystem
{
internal static class ASFormatter
{
internal static bool IsDouble( string value)
{
double doubleNumber = 0;
return double .TryParse(value, out doubleNumber);
}
internal static bool IsInteger( string value)
{
int i = 0;
return Int32.TryParse(value, out i);
}
internal static bool IsNumeric( string value)
{
int i = 0; double d = 0;
return (Int32.TryParse(value, out i) || double .TryParse(value, out d));
}
internal static bool IsNumeric( object value)
{
int i = 0; double d = 0;
return (Int32.TryParse(value.ToString(), out i) || double .TryParse(value.ToString(),
out d));
}
}
}
☐Class ASListItem.cs
using System;
namespace AccountSystem
{
}
internal ASListItem ( string text, object value)
{
textField = text;
valueField = value;
}
public string TextField
{
set { textField = value; }
get { return textField; }
}
public object ValueField
{
set { valueField = value; }
get { return valueField; }
}
}
☐Class ASPermission.cs
using System;
using System.Data;
namespace AccountSystem
{
internal static class ASPermission
{
internal static string GetPermissionOnFunction( string functionName)
{
string permission = "" ;
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsPermissions;3" ;
dataProvider.CommandType = CommandType.StoredProcedure;
string [] parameterName = new string [2] { "@UserId" , "@FunctionName" };
object [] parameterValue = new object [2] { ASParameters.userName, functionName };
DataRow dataRow = dataProvider.GetDataRow(parameterName, parameterValue);
if (dataRow != null )
{
if (Convert.ToString(dataRow[ "Select" ]) == "Y" )
permission += "R" ;
if (Convert.ToString(dataRow[ "Update" ]) == "Y" )
permission += "U" ;
if (Convert.ToString(dataRow[ "Delete" ]) == "Y" )
permission += "D" ;
if (Convert.ToString(dataRow[ "Insert" ]) == "Y" )
permission += "I" ;
if (Convert.ToString(dataRow[ "Approval" ]) == "Y" )
permission += "A" ;
if (Convert.ToString(dataRow[ "History" ]) == "Y" )
permission += "H" ;
if (Convert.ToString(dataRow[ "Calculate" ]) == "Y" )
permission += "C" ;
if (Convert.ToString(dataRow[ "ViewAll" ]) == "Y" )
permission += "S" ;
}
if (permission == "" ) permission = "RIUDASHC" ;
return permission;
}
internal static string [] GetPermissionOnModule( string moduleName)
{
string [] permission = null ;
string userId = ASParameters.userName;
permission = GetPermissionOnModule(userId, moduleName);
switch (moduleName)
{
case "GL" :
if (permission == null )
{
permission = new string [8];
GetPermissionOnModule(permission);
}
break ;
case "AR" :
if (permission == null )
{
permission = new string [5];
GetPermissionOnModule(permission);
}
break ;
case "AP" :
if (permission == null )
{
permission = new string [4];
GetPermissionOnModule(permission);
}
break ;
case "IC" :
if (permission == null )
{
permission = new string [9];
GetPermissionOnModule(permission);
}
break ;
case "DR" :
if (permission == null )
{
permission = new string [6];
GetPermissionOnModule(permission);
}
break ;
case "CM" :
if (permission == null )
{
permission = new string [3];
GetPermissionOnModule(permission);
}
break ;
case "UR" :
if (permission == null )
{
permission = new string [3];
GetPermissionOnModule(permission);
}
break ;
}
return permission;
}
internal static void GetPermissionOnModule( string [] permission)
{
for ( int i = 0; i < permission.Length; i++)
{
permission[i] = "Y" ;
}
}
internal static string [] GetPermissionOnModule( string userName, string moduleName)
{
string [] permission = null ;
ASDataProvider dataProvider = new ASDataProvider();
string procedureName = "" ;
procedureName = GetProcedureName(moduleName);
dataProvider.CommandText = procedureName;
dataProvider.CommandType = CommandType.StoredProcedure;
DataRow dataRow = dataProvider.GetDataRow( "@UserId" , userName);
if (dataRow != null )
{
object [] obj = dataRow.ItemArray;
permission = new string [obj.Length];
for ( int i = 0; i < obj.Length; i++)
{
permission[i] = Convert.ToString(obj[i]);
}
}
return permission;
}
static string GetProcedureName( string moduleName)
{
string procedureName = "" ;
switch (moduleName)
{
case "GL" :
procedureName = "udsPermissions;4" ;
break ;
case "AR" :
procedureName = "udsPermissions;5" ;
break ;
case "AP" :
procedureName = "udsPermissions;6" ;
break ;
case "IC" :
procedureName = "udsPermissions;7" ;
break ;
case "DR" :
procedureName = "udsPermissions;8" ;
break ;
case "CM" :
procedureName = "udsPermissions;9" ;
break ;
case "UR" :
procedureName = "udsPermissions;10" ;
break ;
}
return procedureName;
}
}
}
☐Class ASSecurity.cs
using System;
using System.Text;
using System.IO;
using System.Security.Cryptography;
namespace AccountSystem
{
/// <summary>
/// Summary description for SecurityProvider
/// </summary>
public class SecurityProvider
{
public SecurityProvider ()
{
}
private string keyValue = "AS" ;
public string Key
{
set { keyValue = value; }
get { return keyValue; }
}
encryptPassword = Convert.ToBase64String(passwordBytes);
return encryptPassword;
}
public string ASDecript( string password)
{
string originalPassword = "" ;
byte [] inputByteArray = Convert.FromBase64String(password);
originalPassword = Encoding.UTF8.GetString(inputByteArray);
return originalPassword.Substring(0,
originalPassword.Length - keyValue.Length);
}
byte [] RandomBytes( int minSize, int maxSize)
{
Random random = new Random();
int randomNumber = random.Next(minSize, maxSize);
byte [] randomBytes = new byte [randomNumber];
RNGCryptoServiceProvider rngCryptoServiceProvider
= new RNGCryptoServiceProvider();
rngCryptoServiceProvider.GetNonZeroBytes(randomBytes);
return randomBytes;
}
private string Encrypt( string strToEncrypt)
{
try
{
Byte[] bytKey = System.Text.Encoding.UTF8.GetBytes(Key);
Byte[] bytIV = System.Text.Encoding.UTF8.GetBytes(Key);
TripleDESCryptoServiceProvider objTripleDES = new
TripleDESCryptoServiceProvider();
byte [] bytInput = Encoding.UTF8.GetBytes(strToEncrypt);
MemoryStream objOutputStream = new MemoryStream();
CryptoStream objCryptoStream = new CryptoStream(objOutputStream,
objTripleDES.CreateEncryptor(bytKey, bytIV), CryptoStreamMode.Write);
objCryptoStream.Write(bytInput, 0, bytInput.Length);
objCryptoStream.FlushFinalBlock();
return Convert.ToBase64String(objOutputStream.ToArray());
}
catch (Exception ExceptionErr)
{
throw new System.Exception(ExceptionErr.Message, ExceptionErr.InnerException);
}
}
☐Class ASSqlServer.cs
using System;
using System.Data;
using System.Data.SqlClient;
namespace AccountSystem
{
internal class ASSqlServer
{
internal ASSqlServer ()
{
}
internal static SqlConnection sqlConnection = null ;
}
}
☐Class ASUIHelper.cs
using System;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace AccountSystem
{
class ASUIHelper
{
#region ComboBox
internal static void FillDataToComboBox(
DataTable dataTable, ComboBox comboBox,
string valueField, string textField)
{
comboBox.DataSource = dataTable;
comboBox.ValueMember = valueField;
comboBox.DisplayMember = textField;
}
internal static void FillDataToComboBox(
DataTable dataTable, ComboBox comboBox,
string valueField, string textField,
string firstValue, string firstText)
{
DataRow dataRow = dataTable.NewRow();
dataRow[0] = firstValue;
dataRow[1] = firstText;
dataTable.Rows.InsertAt(dataRow, 0);
comboBox.DataSource = dataTable;
comboBox.ValueMember = valueField;
comboBox.DisplayMember = textField;
}
#endregion
#region TreeView
internal static void FillDataToTreeView(
string root, DataTable firstLevel,
DataTable secondLevel, TreeView treeView)
{
TreeNode treeNode = new TreeNode();
treeNode.Text = root;
treeNode.Tag = "" ;
treeView.Nodes.Add(treeNode);
for ( int i=0; i< firstLevel.Rows.Count; i++)
{
treeNode = new TreeNode();
treeNode.Text = firstLevel.Rows[i][1].ToString();
treeNode.Tag = firstLevel.Rows[i][0].ToString();
treeView.Nodes[0].Nodes.Add(treeNode);
DataView dataView = new DataView(secondLevel);
dataView.RowFilter = "CountryId='" + firstLevel.Rows[i][0].ToString() + "'" ;
foreach (DataRowView rowView in dataView)
{
treeNode = new TreeNode();
treeNode.Text = rowView[1].ToString();
treeNode.Tag = rowView[0].ToString();
treeView.Nodes[0].Nodes[i].Nodes.Add(treeNode);
}
}
}
internal static void FillDataToTreeView(
string root, DataTable dataTable,
TreeView treeView)
{
TreeNode treeNode = new TreeNode();
treeNode.Text = root;
treeNode.Tag = "" ;
treeView.Nodes.Add(treeNode);
for ( int i = 0; i < dataTable.Rows.Count; i++)
{
treeNode = new TreeNode();
treeNode.Text = dataTable.Rows[i][1].ToString();
treeNode.Tag = dataTable.Rows[i][0].ToString();
treeView.Nodes[0].Nodes.Add(treeNode);
}
}
internal static void FillDataToTreeView(
DataTable dataTable, TreeNode parentNode)
{
for ( int i = 0; i < dataTable.Rows.Count; i++)
{
DataRow dataRow = dataTable.Rows[i];
TreeNode treeNode = new TreeNode();
treeNode.Text = dataRow[1].ToString();
treeNode.Tag = dataRow[0].ToString();
parentNode.Nodes.Add(treeNode);
}
}
#endregion
#region DataGridView
internal static void FillDataToGridView(
DataTable dataTable, DataGridView dataGridView)
{
dataGridView.DataSource = dataTable;
}
#endregion
#region MessageBox
internal static void ShowMessageBox( string methodName, Exception ex)
{
MessageBox.Show(ex.Message, ASParameters.welcomeMessage + "[" + methodName + "]"
);
WriteErrorToFile(ex.Message);
}
internal static void ShowMessageBox( string methodName, string message)
{
MessageBox.Show(message, ASParameters.welcomeMessage );
WriteErrorToFile(message+ " [" + methodName + "]" );
}
internal static void WriteMessage( string methodName, string message)
{
WriteErrorToFile(methodName + "-" + message);
}
internal static void ShowWarning( string message)
{
MessageBox.Show(message, ASParameters.welcomeMessage , MessageBoxButtons.OK,
MessageBoxIcon.Warning);
WriteErrorToFile(message);
}
internal static void ShowWarning( string methodName, string message)
{
MessageBox.Show(message, ASParameters.welcomeMessage , MessageBoxButtons.OK,
MessageBoxIcon.Warning);
WriteErrorToFile(message+ " [" + methodName + "]" );
}
#region Write Error Message to log file
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine (
"WriteErrorMessage::" + ex.Message);
}
}
static string CreateLogFolder( string appName)
{
string tempFolderPath =
Environment.GetEnvironmentVariable( "TEMP" );
if (tempFolderPath != "" )
{
tempFolderPath += @"\JackJohnson\" + appName + "\\" ;
if (!Directory.Exists(tempFolderPath))
{
Directory.CreateDirectory(tempFolderPath);
}
}
return tempFolderPath;
}
#endregion Write Error Message to log file
#endregion
}
}
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
btnPrint.Enabled = true;
switch (btnEdit.Text)
{
case "&Edit":
txtId.Enabled = false;
lblCustomers.Visible = true;
lblBatch.Visible = true;
cboCustomers.Visible = true;
cboBatch.Visible = true;
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Receipt Voucher";
panelList.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
DataGridViewRow dataGridViewRow = dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
string itemId =
Convert.ToString(dataGridViewRow.Cells["ReceiptId"].Value);
EditReceipt(itemId);
if (!chkStatus.Checked && rightOnForm.IndexOf("A") != -1)
btnApprove.Enabled = true;
else
btnApprove.Enabled = false;
}
break;
case "&Back":
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboCustomers.Visible = false;
cboBatch.Visible = false;
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Receipt Vouchers";
lblWarning.Text = "Ready...";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
if (rightOnForm.IndexOf("U") != -1 || rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
private void frmReceipts_Load(object sender, EventArgs e)
{
try
{
CheckPermission();
InitiateDate();
lblHeader.Text = "List of Receipt Vouchers";
FillEnumToComboBox();
FillDataToComboBox();
FillReceiptsToGridView(false);
ResizeGridView(rightOnForm.IndexOf("A") != -1);
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Receipt-Load", ex);
}
}
private void btnPrint_Click(object sender, EventArgs e)
{
frmReports frm = new frmReports();
if (btnAddAndSave.Text == "&Add New")
frm.DataTableToPrint = dataTable;
else
frm.DataTableToPrint = dataTableForEdit;
frm.ReportTypeToPrint = (btnAddAndSave.Text == "&Add New");
frm.ReportNameToPrint = "Receipts";
frm.ShowDialog();
}
private void btnSearch_Click(object sender, EventArgs e)
{
FillReceiptsToGridView(panelSearch.Visible);
if (rightOnForm.IndexOf("A") != -1)
{
btnApprove.Visible = true;
}
else
{
btnApprove.Visible = false;
}
ResizeGridView(rightOnForm.IndexOf("A") != -1);
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboCustomers.Visible = false;
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboBatch.Visible = false;
}
private void btnMore_Click(object sender, EventArgs e)
{
if (panelSearch.Visible == false)
{
lblCustomers.Visible = true;
lblBatch.Visible = true;
cboCustomers.Visible = true;
cboBatch.Visible = true;
panelSearch.Visible = true;
}
else
{
panelSearch.Visible = false;
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboCustomers.Visible = false;
cboBatch.Visible = false;
}
cboCustomers.SelectedIndex = cboBatch.SelectedIndex=0;
}
#endregion
}
}
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
btnPrint.Enabled = true;
switch (btnEdit.Text)
{
case "&Edit":
txtId.Enabled = false;
lblSuppliers.Visible = true;
lblBatch.Visible = true;
cboSuppliers.Visible = true;
cboBatch.Visible = true;
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Payment Voucher";
panelList.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
DataGridViewRow dataGridViewRow = dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
string itemId =
Convert.ToString(dataGridViewRow.Cells["PaymentId"].Value);
EditPayment(itemId);
if (!chkStatus.Checked && rightOnForm.IndexOf("A") != -1)
btnApprove.Enabled = true;
else
btnApprove.Enabled = false;
}
break;
case "&Back":
lblSuppliers.Visible = false;
lblBatch.Visible = false;
cboSuppliers.Visible = false;
cboBatch.Visible = false;
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Payment Vouchers";
lblWarning.Text = "Ready...";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Payment-AddNewRecord", ex);
}
cboBatch.SelectedIndex = 0;
cboSuppliers.SelectedIndex = 0;
txtExchange.Text = "1";
}
string CreateDefaultValueForId(string objectName)
{
string newId = "";
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsGetAutoId";
object[] obj = dataProvider.GeObjects("@TableName", objectName);
if (dataProvider.ErrorMessage != "")
ASUIHelper.ShowMessageBox("Payment-CreateDefaultValueForId",
dataProvider.ErrorMessage);
else
{
if (obj != null)
{
string prefix = obj[0].ToString();
int length = Convert.ToInt32(obj[1]);
string lastValue = obj[2].ToString();
int nextNumber =
Convert.ToInt32(lastValue.Substring(prefix.Length)) + 1;
newId = "0000000000000000" + nextNumber.ToString();
newId = prefix + newId.Substring(newId.Length - length +
prefix.Length);
dataProvider.CommandText = "udsUpdLastAutoId";
string[] parameterName = new string[2] { "@TableName", "@Last
};
object[] parameterValue = new object[2] { objectName, newId };
dataProvider.ExecuteNonQuery(parameterName, parameterValue);
}
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Payment-CreateDefaultValueForId", ex);
}
return newId;
}
void ResizeGridView(bool showApprovalColumn)
{
dataGridView.RowHeadersWidth = 22;
if (showApprovalColumn)
{
dataGridView.Columns[0].Visible = true;
dataGridView.Columns["Approval"].Width = 55;
}
else
dataGridView.Columns[0].Visible = false;
dataGridView.Columns["Status"].Width = 40;
dataGridView.Columns["PaymentId"].Width = 75;
dataGridView.Columns["PaymentDate"].Width = 75;
dataGridView.Columns["SupplierId"].Width = 60;
dataGridView.Columns["CompanyNameInVietnamese"].Width = 210;
dataGridView.Columns["DescriptionInVietnamese"].Width = 250;
dataGridView.Columns["Amount"].Width = 90;
dataGridView.Columns["CurrencyId"].Width = 50;
}
void ApplyStyleForColumn()
{
DataGridViewCellStyle style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleRight;
style.Format = ASParameters.doubleNumberFormat;
dataGridView.Columns["Amount"].DefaultCellStyle = style;
dataGridView.Columns["ExchangeRate"].DefaultCellStyle = style;
dataGridView.Columns["PaymentAmount"].DefaultCellStyle = style;
style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleRight;
style.Format = ASParameters.dateFormat;
dataGridView.Columns["PaymentDate"].DefaultCellStyle = style;
style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns["CurrencyId"].DefaultCellStyle = style;
dataGridView.Columns["SupplierId"].DefaultCellStyle = style;
}
#endregion
#region Save/Delete and Edit
bool SavePayment()
{
bool save = false;
string valid = ValidData();
if (valid == "")
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsPayments;3";
string[] parameterName = new string[11] { "@Flag", "@PaymentId",
"@PaymentBatchId", "@PaymentDate", "@PaymentTypeId", "@SupplierId", "@CurrencyId
"@Amount", "@ExchangeRate", "@DescriptionInVietnamese", "@PaymentStatus" };
object[] parameterValue = new object[11] { btnAddAndSave.Text ==
"&Save", txtId.Text, cboBatch.SelectedValue,
dtpDate.Value.ToString(ASParameters.dateFormat), cboType.SelectedValue,
cboSuppliers.SelectedValue, cboCurrency.SelectedValue, Convert.ToDouble(txtAmount.Text
Convert.ToDouble(txtExchange.Text), rtbDescription.Text, chkStatus.Checked };
save = (dataProvider.ExecuteNonQuery(parameterName, parameterValue) >
0);
if(dataProvider.ErrorMessage !="")
ASUIHelper.ShowMessageBox("Payment-SavePayment",
dataProvider.ErrorMessage);
}
else
ASUIHelper.ShowMessageBox("Payment-SavePayment", valid);
return save;
}
string DeletePayment(string itemId)
{
string delete = "";
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsPayments;4";
if (dataProvider.ExecuteNonQuery("@PaymentId", itemId) == 0)
delete = dataProvider.ErrorMessage;
return delete;
}
private void EditPayment(string itemId)
{
try
{
txtId.Text = itemId;
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsPayments;2";
dataProvider.CommandType = CommandType.StoredProcedure;
dataTableForEdit = dataProvider.GetDataTable("@PaymentId", itemId);
if (dataTableForEdit.Rows.Count > 0)
{
DataRow dataRow = dataTableForEdit.Rows[0];
cboBatch.SelectedValue = dataRow["PaymentBatchId"];
dtpDate.Value = Convert.ToDateTime(dataRow["DateOfPayment"]);
cboSuppliers.SelectedValue = dataRow["SupplierId"];
cboCurrency.SelectedValue = dataRow["CurrencyId"];
txtAmount.Text =
Convert.ToDouble(dataRow["Amount"]).ToString(ASParameters.doubleNumberFormat);
txtExchange.Text =
Convert.ToDouble(dataRow["ExchangeRate"]).ToString(ASParameters.doubleNumberForm
txtTotalAmount.Text =
Convert.ToDouble(dataRow["PaymentAmount"]).ToString(ASParameters.doubleNumberFor
rtbDescription.Text =
Convert.ToString(dataRow["DescriptionInVietnamese"]);
if (Convert.ToString(dataRow["PaymentStatus"]) == "True")
{
chkStatus.Checked = true;
btnAddAndSave.Enabled = false;
btnDelete.Enabled = false;
}
else
{
chkStatus.Checked = false;
//btnAddAndSave.Enabled = true;
if (rightOnForm.IndexOf("U") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
else
btnDelete.Enabled = false;
}
CreateWarning(dataRow);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Payment-EditPayment", ex);
}
}
void CreateWarning(DataRow dataRow)
{
lblWarning.Text = "CreatedBy: " + Convert.ToString(dataRow["CreatedBy"]);
lblWarning.Text += "; CreatedDate: " +
Convert.ToString(dataRow["CreatedDate"]);
lblWarning.Text += "; ModifiedBy: " +
Convert.ToString(dataRow["ModifiedBy"]);
lblWarning.Text += "; ModifiedDate: " +
Convert.ToString(dataRow["ModifiedDate"]);
}
void CalculateTotalAmount()
{
try
{
if (txtExchange.Text != "" && txtAmount.Text != "")
{
double rate = Convert.ToDouble(txtExchange.Text);
double amount = Convert.ToDouble(txtAmount.Text);
txtAmount.Text = amount.ToString(ASParameters.doubleNumberForm
txtTotalAmount.Text = (amount *
rate).ToString(ASParameters.doubleNumberFormat);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Payment-CalculateTotalAmount", ex);
}
}
#endregion
}
}
namespace AccountSystem
{
public partial class frmCashBalance : Form
{
public frmCashBalance ()
{
InitializeComponent();
}
DataTable dataTable = null ;
#region Permission
string rightOnForm = "R" ;
void CheckPermission()
{
rightOnForm = ASPermission.GetPermissionOnFunction( "CashBalance" );
if (rightOnForm.IndexOf( "C" ) == -1)
{
btnCalculate.Enabled = false ;
}
else
{
btnCalculate.Enabled = true ;
}
#endregion
void InitiateDate()
{
txtMonth.Text = ASParameters.currentMonth;
dtpStart.Value = DateTime.Parse( "01/" + txtMonth.Text);
dtpStart.MinDate = DateTime.Parse( "01/" + txtMonth.Text);
int days = DateTime.DaysInMonth(dtpStart.MinDate.Year, dtpStart.MinDate.Month);
dtpStart.MaxDate = DateTime.Parse(days.ToString() + "/" + txtMonth.Text);
}
void ResizeGridView()
{
dataGridView.RowHeadersWidth = 22;
dataGridView.Columns[ "IssueId" ].Width = 75;
dataGridView.Columns[ "IssueDate" ].Width = 75;
dataGridView.Columns[ "PartnerId" ].Width = 55;
dataGridView.Columns[ "CompanyNameInVietnamese" ].Width = 200;
dataGridView.Columns[ "ReceiptAmount" ].Width = 85;
dataGridView.Columns[ "PaymentAmount" ].Width = 85;
dataGridView.Columns[ "BalanceAmount" ].Width = 85;
dataGridView.Columns[ "CurrencyId" ].Width = 55;
dataGridView.Columns[ "ExchangeRate" ].Width = 85;
dataGridView.Columns[ "DescriptionInVietnamese" ].Width = 200;
dataGridView.Columns[ "CreatedBy" ].Width = 70;
dataGridView.Columns[ "CreatedDate" ].Width = 70;
}
private void FillCashBalanceToGridView()
{
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsCashBalance" ;
dataProvider.CommandType = CommandType.StoredProcedure;
dataTable = dataProvider.GetDataTable();
ASUIHelper.FillDataToGridView(dataTable, this .dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForColumn();
ResizeGridView();
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "" )
{
ASUIHelper.ShowMessageBox( "Cash Balance-FillCashBalanceToGridView" ,
dataProvider.ErrorMessage);
}
if (dataTable.Rows.Count > 0)
{
btnPrint.Enabled = true ;
}
else
{
btnPrint.Enabled = false ;
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox( "Cash Balance-FillReceiptsToGridView" , ex);
}
}
private void frmCashBalanceSheet_Load( object sender, EventArgs e)
{
CheckPermission();
InitiateDate();
ReadBeginingAmount();
}
private void btnCalculate_Click( object sender, EventArgs e)
{
ASCommon asCommon = new ASCommon();
string previousMonth =
asCommon.GetPreviousMonth(
ASParameters.currentMonth);
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsCashBalance;2" ;
dataProvider.CommandType = CommandType.StoredProcedure;
string [] parameterName = new string [4] { "@CurrentMonth" , "@PreviousMonth" ,
"@StartDate" , "@EndDate" };
object [] parameterValue = new object [4] { ASParameters.currentMonth,
previousMonth, dtpStart.Value.ToString(ASParameters.dateFormat),
dtpEnd.Value.ToString(ASParameters.dateFormat) };
dataProvider.ExecuteNonQuery(parameterName, parameterValue);
if (dataProvider.ErrorMessage != "" )
{
ASUIHelper.ShowMessageBox( "Cash Balance-Calculate" ,
dataProvider.ErrorMessage);
}
else
FillCashBalanceToGridView();
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox( "Cash Balance-Calculate" , ex);
}
}
frm.DataTableToPrint = dataTable;
frm.ReportTypeToPrint = true ;
frm.ReportNameToPrint = "CashBalance" ;
frm.ShowDialog();
}
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnUserName_Click(object sender, EventArgs e)
{
string commandText = "select name, name " +
"from sysusers where hasdbaccess=1";
FillDataToComboBox(commandText,
this.cboUserName, "name", "name");
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboProvinces.Visible = false;
lblProvinces.Visible = false;
lblType.Visible = false;
cboType.Visible = false;
}
private void dataGridView_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView.Rows[e.RowIndex].Cells["Status"].Value.ToString() == "False
{
btnDelete.Enabled = false;
}
else
{
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
else
btnDelete.Enabled = false;
}
}
}
}
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
btnPrint.Enabled = true;
switch (btnEdit.Text)
{
case "&Edit":
txtId.Enabled = false;
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Sales Invoice Batch";
panelList.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
DataGridViewRow dataGridViewRow =
dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
string itemId =
Convert.ToString(dataGridViewRow.Cells["InvoiceBatchId"].Value);
EditSalesInvoiceBatch(itemId);
if (!chkStatus.Checked && rightOnForm.IndexOf("A")
!= -1)
btnApprove.Enabled = true;
else
btnApprove.Enabled = false;
}
break;
case "&Back":
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Sales Invoice Batch";
lblWarning.Text = "Ready...";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
if (rightOnForm.IndexOf("U") != -1 ||
rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
}
catch (Exception ex)
{
ASUIHelper.WriteMessage("SalesInvoiceBatch-
AddNewRecord", ex.Message);
}
}
string CreateDefaultValueForId(string objectName)
{
string newId = "";
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsGetAutoId";
object[] obj = dataProvider.GeObjects("@TableName",
objectName);
if (dataProvider.ErrorMessage != "")
ASUIHelper.ShowMessageBox("SalesInvoiceBatch-
CreateDefaultValueForId", dataProvider.ErrorMessage);
else
{
string prefix = obj[0].ToString();
int length = Convert.ToInt32(obj[1]);
string lastValue = obj[2].ToString();
int nextNumber =
Convert.ToInt32(lastValue.Substring(prefix.Length))+1;
newId = "0000000000000000" + nextNumber.ToString();
newId = prefix + newId.Substring(newId.Length - length +
prefix.Length);
dataProvider.CommandText = "udsUpdLastAutoId";
string[] parameterName = new string[2] { "@TableName",
"@LastId"};
object[] parameterValue = new object[2] { objectName,
newId };
dataProvider.ExecuteNonQuery(parameterName,
parameterValue);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("SalesInvoiceBatch-
CreateDefaultValueForId", ex);
}
return newId;
}
void ResizeGridView(bool showApprovalColumn)
{
dataGridView.RowHeadersWidth = 22;
if (showApprovalColumn)
{
dataGridView.Columns[0].Visible = true;
dataGridView.Columns["Approval"].Width = 55;
}
else
dataGridView.Columns[0].Visible = false;
dataGridView.Columns["Status"].Width = 40;
dataGridView.Columns["InvoiceBatchId"].Width = 75;
dataGridView.Columns["InvoiceBatchDate"].Width = 75;
dataGridView.Columns["DescriptionInVietnamese"].Width = 250;
}
void ApplyStyleForColumn()
{
DataGridViewCellStyle style = new
DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleRight;
style.Format = ASParameters.dateFormat;
dataGridView.Columns["InvoiceBatchDate"].DefaultCellStyle =
style;
style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns["InvoiceBatchId"].DefaultCellStyle =
style;
}
void InitiateDate()
{
string month = ASParameters.currentMonth;
dtpDate.Value = DateTime.Parse("01/" + month);
dtpDate.MinDate = DateTime.Parse("01/" + month);
int days = DateTime.DaysInMonth(dtpStart.MinDate.Year,
dtpStart.MinDate.Month);
dtpDate.MaxDate = DateTime.Parse(days.ToString() + "/" +
month);
dtpStart.Value = DateTime.Parse("01/" + month);
dtpStart.MinDate = DateTime.Parse("01/" + month);
dtpStart.MaxDate = DateTime.Parse(days.ToString() + "/" +
month);
dtpEnd.MinDate = DateTime.Parse("01/" + month);
dtpEnd.MaxDate = DateTime.Parse(days.ToString() + "/" + month);
dtpEnd.Value = dtpEnd.MaxDate;
}
#endregion
#region Save/Delete and Edit
bool SaveSalesInvoiceBatch()
{
bool save = false;
string valid = ValidData();
if (valid == "")
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsSalesInvoiceBatchs;4";
string[] parameterName = new string[5] { "@Flag",
"@InvoiceBatchId",
"@InvoiceBatchDate", "@DescriptionInVietnamese", "@BatchStatus" };
object[] parameterValue = new object[5] { btnAddAndSave.Text
== "&Save", txtId.Text, dtpDate.Value.ToString(ASParameters.dateFormat),
rtbDescription.Text, chkStatus.Checked };
save = (dataProvider.ExecuteNonQuery(parameterName,
parameterValue) > 0);
if(dataProvider.ErrorMessage !="")
ASUIHelper.ShowMessageBox("SaveSalesInvoiceBatch",
dataProvider.ErrorMessage);
}
else
ASUIHelper.ShowMessageBox("SalesInvoiceBatch-
SaveSalesInvoiceBatch", valid);
return save;
}
string DeleteSalesInvoiceBatch(string itemId)
{
string delete = "";
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsSalesInvoiceBatchs;3";
if (dataProvider.ExecuteNonQuery("@InvoiceBatchId", itemId) ==
0)
delete = dataProvider.ErrorMessage;
return delete;
}
}
private void FillSalesInvoicesToGridView(bool search)
{
try
{
string keyword = txtKeyword.Text;
string searchByUserName = rightToSeeAllItem;
string status =
Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueField);
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsSalesInvoices;2";
dataProvider.CommandType = CommandType.StoredProcedure;
if (!search)
dataTable = dataProvider.GetDataTable(new string[7] { "@CustomerId"
"BatchId", "@InvoiceStatus", "@Keyword", "@StartDate", "@EndDate", "@UserName" },
new object[7] { "", "", status, keyword,
dtpStart.MinDate.ToString(ASParameters.dateFormat),
dtpStart.MaxDate.ToString(ASParameters.dateFormat), searchByUserName });
else
{
searchByUserName = Convert.ToString(cboUserName.SelectedValue);
string customerId =
Convert.ToString(this.cboCustomers.SelectedValue);
string batchId = Convert.ToString(this.cboBatch.SelectedValue);
string startDate =
this.dtpStart.Value.ToString(ASParameters.dateFormat);
string endDate =
this.dtpEnd.Value.ToString(ASParameters.dateFormat);
dataTable = dataProvider.GetDataTable(new string[7] { "@CustomerId"
"BatchId", "@InvoiceStatus", "@Keyword", "@StartDate", "@EndDate", "@UserName" },
new object[7] { customerId, batchId, status, keyword, startDate, endDate,
searchByUserName });
}
ASUIHelper.FillDataToGridView(dataTable, this.dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForSalesInvoices();
ResizeGridViewForSalesInvoices(rightOnForm.IndexOf("A") != -1);
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Invoice-FillInvoiceToGridView",
dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Invoice-FillInvoiceToGridView", ex);
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
FillSalesInvoicesToGridView(panelSearch.Visible);
if (rightOnForm.IndexOf("A") != -1)
{
dataGridView.Columns[0].Visible = true;
btnApprove.Visible = true;
}
else
{
dataGridView.Columns[0].Visible = false;
btnApprove.Visible = false;
}
}
private void btnMore_Click(object sender, EventArgs e)
{
if (panelSearch.Visible == false)
{
panelSearch.Visible = true;
lblCustomers.Visible = true;
lblBatch.Visible = true;
cboCustomers.Visible = true;
cboBatch.Visible = true;
lblCustomers.BringToFront();
lblBatch.BringToFront();
cboCustomers.BringToFront();
cboBatch.BringToFront();
}
else
{
panelSearch.Visible = false;
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboCustomers.Visible = false;
cboBatch.Visible = false;
}
cboCustomers.SelectedIndex = 0;
cboBatch.SelectedIndex = 0;
}
private void btnAddAndSave_Click(object sender, EventArgs e)
{
switch (btnAddAndSave.Text)
{
case "&Add New":
txtId.Enabled = true;
lblCustomers.Visible = true;
lblBatch.Visible = true;
cboCustomers.Visible = true;
cboBatch.Visible = true;
btnAddAndSave.Text = "&Save";
btnEdit.Text = "&Back";
lblHeader.Text = "New Sales Invoice";
dataGridView.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
btnDelete.Enabled = false;
btnPrint.Enabled = false;
btnApprove.Enabled = false;
AddNewRecord();
break;
case "&Save":
if (SaveInvoice())
{
lblHeader.Text = "Update Sales Invoice";
btnAddAndSave.Text = "&Update";
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
if (rightOnForm.IndexOf("A") != -1)
btnApprove.Enabled = true;
btnNewDetail.Enabled = true;
btnPrint.Enabled = true;
lblWarning.Text = "You can add Sales Invoice Details by click on
Add Detail button.";
}
break;
case "&Update":
if (SaveInvoice())
{
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboCustomers.Visible = false;
cboBatch.Visible = false;
lblHeader.Text = "List of Sales Invoices";
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
dataGridView.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnUserName_Click(object sender, EventArgs e)
{
string commandText = "select name, name " +
"from sysusers where hasdbaccess=1";
FillDataToComboBox(commandText,
this.cboUserName, "name", "name");
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboCustomers.Visible = false;
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboBatch.Visible = false;
}
private void cboCurrency_SelectionChangeCommitted(object sender, EventArgs e)
{
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsGetExchangeRate";
dataProvider.CommandType = CommandType.StoredProcedure;
double rate =
Convert.ToDouble(dataProvider.ExecuteScalar("@CurrencyId",
cboCurrency.SelectedValue));
txtExchange.Text = rate.ToString(ASParameters.doubleNumberFormat);
CalculateTotalAmount();
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("SalesInvoices-Change Currency", ex);
}
}
private void txtExchange_TextChanged(object sender, EventArgs e)
{
CalculateTotalAmount();
}
void CalculateTotalAmount()
{
try
{
if (txtExchange.Text != "" && txtAmount.Text != "")
{
double rate = Convert.ToDouble(txtExchange.Text);
double amount = Convert.ToDouble(txtAmount.Text);
txtAmount.Text =
amount.ToString(ASParameters.doubleNumberFormat);
txtTotalAmount.Text = (amount *
rate).ToString(ASParameters.doubleNumberFormat);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("SalesInvoices-CalculateTotalAmount", ex)
}
}
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
DataGridViewRow dataGridViewRow = dataGridView1.CurrentRow;
if (dataGridViewRow != null)
{
EditDetails(dataGridViewRow);
}
}
void EditDetails(DataGridViewRow dataGridViewRow)
{
frmInvoiceDetails frm = new frmInvoiceDetails();
frm.Status = invoiceStatus;
frm.HeaderText = "Sales Invoice Details - Edit Item";
frm.InvoiceId = this.txtId.Text;
frm.OrdinalNumber = Convert.ToInt32(dataGridViewRow.Cells["#"].Value);
frm.ProductId = dataGridViewRow.Cells["ProductId"].Value.ToString();
frm.Quantity = dataGridViewRow.Cells["Quantity"].Value.ToString();
frm.Price = dataGridViewRow.Cells["Price"].Value.ToString();
frm.Currency = cboCurrency.SelectedValue.ToString();
frm.VATRate = dataGridViewRow.Cells["VATRate"].Value.ToString();
frm.ImportTaxRate =
dataGridViewRow.Cells["ImportTaxRate"].Value.ToString();
frm.NextOrdinalNumber = this.dataGridView1.Rows.Count + 1;
frm.ShowDialog(this);
FillSalesInvoiceDetailsToGridView(txtId.Text);
}
private void btnNewDetail_Click(object sender, EventArgs e)
{
frmInvoiceDetails frm = new frmInvoiceDetails();
frm.HeaderText = "Sales Invoice Details - Add New Item";
frm.NextOrdinalNumber = this.dataGridView1.Rows.Count + 1;
frm.InvoiceId = this.txtId.Text;
frm.Currency = cboCurrency.SelectedValue.ToString();
frm.ShowDialog(this);
FillSalesInvoiceDetailsToGridView(txtId.Text);
}
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells["ProductId"].Value.ToString()
!= "")
{
if (rightOnForm.IndexOf("D") != -1 && !invoiceStatus)
btnDeleteDetail.Enabled = true;
else
btnDeleteDetail.Enabled = false;
}
}
private void btnDeleteDetail_Click(object sender, EventArgs e)
{
try
{
string ordinalNumber = "";
string invoiceId = "";
string productId = "";
string delete = "";
DataGridViewRow dataGridViewRow = dataGridView1.CurrentRow;
if (dataGridViewRow != null)
{
ordinalNumber =
Convert.ToString(dataGridViewRow.Cells["#"].Value);
invoiceId = txtId.Text;
productId =
Convert.ToString(dataGridViewRow.Cells["ProductId"].Value);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
btnPrint.Enabled = true;
switch (btnEdit.Text)
{
case "&Edit":
txtPrice.Enabled = false;
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Sales Price";
panelList.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
lblProducts.Visible = true;
cboProducts.Visible = true;
DataGridViewRow dataGridViewRow =
dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
string itemId =
Convert.ToString(dataGridViewRow.Cells["ProductId"].Value);
string date =
Convert.ToString(dataGridViewRow.Cells["DateOfPrice"].Value);
EditSalesPrices(itemId, date);
if (!chkStatus.Checked && rightOnForm.IndexOf("A")
!= -1)
btnApprove.Enabled = true;
else
btnApprove.Enabled = false;
}
break;
case "&Back":
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Sales Price";
lblWarning.Text = "Ready...";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
lblProducts.Visible = false;
cboProducts.Visible = false;
if (rightOnForm.IndexOf("U") != -1 ||
rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
#endregion
}
}
}
private void FillSuppliersToGridView(bool search)
{
try
{
string keyword = txtKeyword.Text;
string searchByUserName = rightToSeeAllItem;
string status =
Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueField);
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsSuppliers;4";
dataProvider.CommandType = CommandType.StoredProcedure;
if (!search)
dataTable = dataProvider.GetDataTable(new string[7] { "@ProvinceId"
"TypeId", "@SupplierStatus", "@Keyword", "@StartDate", "@EndDate", "@UserName" },
object[7] { "", "", status, keyword, dtpStart.MinDate.ToString(ASParameters.dateFormat),
dtpStart.MaxDate.ToString(ASParameters.dateFormat), searchByUserName });
else
{
searchByUserName = Convert.ToString(cboUserName.SelectedValue)
string provinceId = Convert.ToString(this.cboProvinces.SelectedValue)
string typeId = Convert.ToString(this.cboType.SelectedValue);
string startDate = this.dtpStart.Value.ToString(ASParameters.dateForm
string endDate = this.dtpEnd.Value.ToString(ASParameters.dateForma
dataTable = dataProvider.GetDataTable(new string[7] { "@ProvinceId"
"TypeId", "@SupplierStatus", "@Keyword", "@StartDate", "@EndDate", "@UserName" },
object[7] { provinceId, typeId, status, keyword, startDate, endDate, searchByUserName });
}
ASUIHelper.FillDataToGridView(dataTable, this.dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForSuppliers();
ResizeGridViewForSuppliers(rightOnForm.IndexOf("A") != -1);
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Suppliers-FillSuppliersToGridView",
dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Suppliers-FillSuppliersToGridView", ex);
}
EnableApprovalButton();
}
void EnableApprovalButton()
{
string status = Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueFi
if (status != "2" && status != "")
{
if (rightOnForm.IndexOf("A") != -1)
btnDiscontinued.Enabled = true;
else
btnDiscontinued.Enabled = false;
if (status == "1")
btnDiscontinued.Text = "Activate";
else
btnDiscontinued.Text = "Disconitnued";
}
else
btnDiscontinued.Enabled = false;
}
private void btnSearch_Click(object sender, EventArgs e)
{
FillSuppliersToGridView(panelSearch.Visible);
if (rightOnForm.IndexOf("A") != -1)
{
dataGridView.Columns[0].Visible = true;
btnDiscontinued.Visible = true;
}
else
{
dataGridView.Columns[0].Visible = false;
btnDiscontinued.Visible = false;
}
}
private void btnMore_Click(object sender, EventArgs e)
{
if (panelSearch.Visible == false)
{
lblProvinces.Visible = true;
lblType.Visible = true;
cboProvinces.Visible = true;
cboType.Visible = true;
lblProvinces.BringToFront();
lblType.BringToFront();
cboProvinces.BringToFront();
cboType.BringToFront();
panelSearch.Visible = true;
}
else
{
panelSearch.Visible = false;
lblProvinces.Visible = false;
lblType.Visible = false;
cboProvinces.Visible = false;
cboType.Visible = false;
}
cboProvinces.SelectedIndex = 0;
cboType.SelectedIndex = 0;
}
private void btnAddAndSave_Click(object sender, EventArgs e)
{
switch (btnAddAndSave.Text)
{
case "&Add New":
txtId.Enabled = true;
lblProvinces.Visible = true;
lblType.Visible = true;
cboProvinces.Visible = true;
cboType.Visible = true;
btnAddAndSave.Text = "&Save";
btnEdit.Text = "&Back";
lblHeader.Text = "New Supplier";
dataGridView.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
btnDelete.Enabled = false;
btnPrint.Enabled = false;
btnDiscontinued.Enabled = false;
AddNewRecord();
break;
case "&Save":
if (SaveSupplier())
{
lblProvinces.Visible = false;
lblType.Visible = false;
cboProvinces.Visible = false;
cboType.Visible = false;
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "Lits of Suppliers";
btnEdit.Text = "&Edit";
dataGridView.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnDelete.Enabled = true;
btnPrint.Enabled = true;
}
break;
case "&Update":
if (SaveSupplier())
{
lblProvinces.Visible = false;
lblType.Visible = false;
cboProvinces.Visible = false;
cboType.Visible = false;
lblHeader.Text = "List of Suppliers";
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
dataGridView.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnUserName_Click(object sender, EventArgs e)
{
string commandText = "select name, name " +
"from sysusers where hasdbaccess=1";
FillDataToComboBox(commandText,
this.cboUserName, "name", "name");
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboProvinces.Visible = false;
lblProvinces.Visible = false;
lblType.Visible = false;
cboType.Visible = false;
}
private void frmSuppliers_Load(object sender, EventArgs e)
{
CheckPermission();
InitiateDate();
lblHeader.Text = "List of Suppliers";
FillEnumToComboBox();
FillDataToComboBox();
FillDataToTreeView();
}
}
}
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
btnPrint.Enabled = true;
switch (btnEdit.Text)
{
case "&Edit":
txtId.Enabled = false;
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Purchase Invoice Batch";
panelList.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
DataGridViewRow dataGridViewRow =
dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
string itemId =
Convert.ToString(dataGridViewRow.Cells["InvoiceBatchId"].Value);
EditPurchaseInvoiceBatch(itemId);
if (!chkStatus.Checked && rightOnForm.IndexOf("A")
!= -1)
btnApprove.Enabled = true;
else
btnApprove.Enabled = false;
}
break;
case "&Back":
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Purchase Invoice Batch";
lblWarning.Text = "Ready...";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
if (rightOnForm.IndexOf("U") != -1 ||
rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
}
catch (Exception ex)
{
ASUIHelper.WriteMessage("PurchaseInvoiceBatch-
AddNewRecord", ex.Message);
}
}
string CreateDefaultValueForId(string objectName)
{
string newId = "";
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsGetAutoId";
object[] obj = dataProvider.GeObjects("@TableName",
objectName);
if (dataProvider.ErrorMessage != "")
ASUIHelper.ShowMessageBox("PurchaseInvoiceBatch-
CreateDefaultValueForId", dataProvider.ErrorMessage);
else
{
string prefix = obj[0].ToString();
int length = Convert.ToInt32(obj[1]);
string lastValue = obj[2].ToString();
int nextNumber =
Convert.ToInt32(lastValue.Substring(prefix.Length))+1;
newId = "0000000000000000" + nextNumber.ToString();
newId = prefix + newId.Substring(newId.Length - length +
prefix.Length);
dataProvider.CommandText = "udsUpdLastAutoId";
string[] parameterName = new string[2] { "@TableName",
"@LastId"};
object[] parameterValue = new object[2] { objectName,
newId };
dataProvider.ExecuteNonQuery(parameterName,
parameterValue);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("PurchaseInvoiceBatch-
CreateDefaultValueForId", ex);
}
return newId;
}
void ResizeGridView(bool showApprovalColumn)
{
dataGridView.RowHeadersWidth = 22;
if (showApprovalColumn)
{
dataGridView.Columns[0].Visible = true;
dataGridView.Columns["Approval"].Width = 55;
}
else
dataGridView.Columns[0].Visible = false;
dataGridView.Columns["Status"].Width = 40;
dataGridView.Columns["InvoiceBatchId"].Width = 75;
dataGridView.Columns["InvoiceBatchDate"].Width = 75;
dataGridView.Columns["DescriptionInVietnamese"].Width = 250;
}
void ApplyStyleForColumn()
{
DataGridViewCellStyle style = new
DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleRight;
style.Format = ASParameters.dateFormat;
dataGridView.Columns["InvoiceBatchDate"].DefaultCellStyle =
style;
style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns["InvoiceBatchId"].DefaultCellStyle =
style;
}
void InitiateDate()
{
string month = ASParameters.currentMonth;
dtpDate.Value = DateTime.Parse("01/" + month);
dtpDate.MinDate = DateTime.Parse("01/" + month);
int days = DateTime.DaysInMonth(dtpStart.MinDate.Year,
dtpStart.MinDate.Month);
dtpDate.MaxDate = DateTime.Parse(days.ToString() + "/" +
month);
dtpStart.Value = DateTime.Parse("01/" + month);
dtpStart.MinDate = DateTime.Parse("01/" + month);
dtpStart.MaxDate = DateTime.Parse(days.ToString() + "/" +
month);
dtpEnd.MinDate = DateTime.Parse("01/" + month);
dtpEnd.MaxDate = DateTime.Parse(days.ToString() + "/" + month);
dtpEnd.Value = dtpEnd.MaxDate;
}
#endregion
#region Save/Delete and Edit
bool SavePurchaseInvoiceBatch()
{
bool save = false;
string valid = ValidData();
if (valid == "")
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsPurchaseInvoiceBatchs;4";
string[] parameterName = new string[5] { "@Flag",
"@InvoiceBatchId",
"@InvoiceBatchDate", "@DescriptionInVietnamese", "@BatchStatus" };
object[] parameterValue = new object[5] { btnAddAndSave.Text
== "&Save", txtId.Text, dtpDate.Value.ToString(ASParameters.dateFormat),
rtbDescription.Text, chkStatus.Checked };
save = (dataProvider.ExecuteNonQuery(parameterName,
parameterValue) > 0);
if(dataProvider.ErrorMessage !="")
ASUIHelper.ShowMessageBox("SavePurchaseInvoiceBatch",
dataProvider.ErrorMessage);
}
else
ASUIHelper.ShowMessageBox("PurchaseInvoiceBatch-
SavePurchaseInvoiceBatch", valid);
return save;
}
string DeletePurchaseInvoiceBatch(string itemId)
{
string delete = "";
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsPurchaseInvoiceBatchs;3";
if (dataProvider.ExecuteNonQuery("@InvoiceBatchId", itemId) ==
0)
delete = dataProvider.ErrorMessage;
return delete;
}
}
private void FillPurchaseInvoicesToGridView(bool search)
{
try
{
string keyword = txtKeyword.Text;
string searchByUserName = rightToSeeAllItem;
string status =
Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueField);
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsPurchaseInvoices;2";
dataProvider.CommandType = CommandType.StoredProcedure;
if (!search)
dataTable = dataProvider.GetDataTable(new string[7] { "@SupplierId",
"BatchId", "@InvoiceStatus", "@Keyword", "@StartDate", "@EndDate", "@UserName" },
new object[7] { "", "", status, keyword,
dtpStart.MinDate.ToString(ASParameters.dateFormat),
dtpStart.MaxDate.ToString(ASParameters.dateFormat), searchByUserName });
else
{
searchByUserName = Convert.ToString(cboUserName.SelectedValue);
string supplierId = Convert.ToString(this.cboSuppliers.SelectedValue);
string batchId = Convert.ToString(this.cboBatch.SelectedValue);
string startDate =
this.dtpStart.Value.ToString(ASParameters.dateFormat);
string endDate =
this.dtpEnd.Value.ToString(ASParameters.dateFormat);
dataTable = dataProvider.GetDataTable(new string[7] { "@SupplierId",
"BatchId", "@InvoiceStatus", "@Keyword", "@StartDate", "@EndDate", "@UserName" },
new object[7] { supplierId, batchId, status, keyword, startDate, endDate, searchByUserName
});
}
ASUIHelper.FillDataToGridView(dataTable, this.dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForColumnForPurchaseInvoices();
ResizeGridViewForPurchaseInvoices(rightOnForm.IndexOf("A") !=
-1);
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Invoice-FillInvoiceToGridView",
dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Invoice-FillInvoiceToGridView", ex);
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
FillPurchaseInvoicesToGridView(panelSearch.Visible);
if (rightOnForm.IndexOf("A") != -1)
{
dataGridView.Columns[0].Visible = true;
btnApprove.Visible = true;
}
else
{
dataGridView.Columns[0].Visible = false;
btnApprove.Visible = false;
}
}
private void btnMore_Click(object sender, EventArgs e)
{
if (panelSearch.Visible == false)
{
panelSearch.Visible = true;
lblSuppliers.Visible = true;
lblBatch.Visible = true;
cboSuppliers.Visible = true;
cboBatch.Visible = true;
lblSuppliers.BringToFront();
lblBatch.BringToFront();
cboSuppliers.BringToFront();
cboBatch.BringToFront();
}
else
{
panelSearch.Visible = false;
lblSuppliers.Visible = false;
lblBatch.Visible = false;
cboSuppliers.Visible = false;
cboBatch.Visible = false;
}
cboSuppliers.SelectedIndex = 0;
cboBatch.SelectedIndex = 0;
}
private void btnAddAndSave_Click(object sender, EventArgs e)
{
switch (btnAddAndSave.Text)
{
case "&Add New":
txtId.Enabled = true;
lblSuppliers.Visible = true;
lblBatch.Visible = true;
cboSuppliers.Visible = true;
cboBatch.Visible = true;
btnAddAndSave.Text = "&Save";
btnEdit.Text = "&Back";
lblHeader.Text = "New Purchase Invoice";
dataGridView.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
btnDelete.Enabled = false;
btnPrint.Enabled = false;
btnApprove.Enabled = false;
AddNewRecord();
break;
case "&Save":
if (SaveInvoice())
{
lblHeader.Text = "Update Purchase Invoice";
btnAddAndSave.Text = "&Update";
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
if (rightOnForm.IndexOf("A") != -1)
btnApprove.Enabled = true;
btnNewDetail.Enabled = true;
btnPrint.Enabled = true;
lblWarning.Text = "You can add Purchase Invoice Details by click
on Add Detail button.";
}
break;
case "&Update":
if (SaveInvoice())
{
lblSuppliers.Visible = false;
lblBatch.Visible = false;
cboSuppliers.Visible = false;
cboBatch.Visible = false;
lblHeader.Text = "List of Purchase Invoices";
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
dataGridView.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnUserName_Click(object sender, EventArgs e)
{
string commandText = "select name, name " +
"from sysusers where hasdbaccess=1";
FillDataToComboBox(commandText,
this.cboUserName, "name", "name");
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboSuppliers.Visible = false;
lblSuppliers.Visible = false;
lblBatch.Visible = false;
cboBatch.Visible = false;
}
private void cboCurrency_SelectionChangeCommitted(object sender, EventArgs e)
{
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsGetExchangeRate";
dataProvider.CommandType = CommandType.StoredProcedure;
double rate =
Convert.ToDouble(dataProvider.ExecuteScalar("@CurrencyId",
cboCurrency.SelectedValue));
txtExchange.Text = rate.ToString(ASParameters.doubleNumberFormat);
CalculateTotalAmount();
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("PurchaseInvoices-Change Currency", ex);
}
}
private void txtExchange_TextChanged(object sender, EventArgs e)
{
CalculateTotalAmount();
}
void CalculateTotalAmount()
{
try
{
if (txtExchange.Text != "" && txtAmount.Text != "")
{
double rate = Convert.ToDouble(txtExchange.Text);
double amount = Convert.ToDouble(txtAmount.Text);
txtAmount.Text =
amount.ToString(ASParameters.doubleNumberFormat);
txtTotalAmount.Text = (amount *
rate).ToString(ASParameters.doubleNumberFormat);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("PurchaseInvoices-CalculateTotalAmount",
ex);
}
}
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
DataGridViewRow dataGridViewRow = dataGridView1.CurrentRow;
if (dataGridViewRow != null)
{
EditDetails(dataGridViewRow);
}
}
void EditDetails(DataGridViewRow dataGridViewRow)
{
frmInvoiceDetails frm = new frmInvoiceDetails();
frm.SalesInvoice = false;
frm.Status = invoiceStatus;
frm.HeaderText = "Purchase Invoice Details - Edit Item";
frm.InvoiceId = this.txtId.Text;
frm.OrdinalNumber = Convert.ToInt32(dataGridViewRow.Cells["#"].Value);
frm.ProductId = dataGridViewRow.Cells["ProductId"].Value.ToString();
frm.Quantity = dataGridViewRow.Cells["Quantity"].Value.ToString();
frm.Price = dataGridViewRow.Cells["Price"].Value.ToString();
frm.Currency = cboCurrency.SelectedValue.ToString();
frm.VATRate = dataGridViewRow.Cells["VATRate"].Value.ToString();
frm.ImportTaxRate =
dataGridViewRow.Cells["ImportTaxRate"].Value.ToString();
frm.NextOrdinalNumber = this.dataGridView1.Rows.Count + 1;
frm.ShowDialog(this);
FillPurchaseInvoiceDetailsToGridView(txtId.Text);
}
private void btnNewDetail_Click(object sender, EventArgs e)
{
frmInvoiceDetails frm = new frmInvoiceDetails();
frm.SalesInvoice = false;
frm.HeaderText = "Purchase Invoice Details - Add New Item";
frm.NextOrdinalNumber = this.dataGridView1.Rows.Count + 1;
frm.InvoiceId = this.txtId.Text;
frm.Currency = cboCurrency.SelectedValue.ToString();
frm.ShowDialog(this);
FillPurchaseInvoiceDetailsToGridView(txtId.Text);
}
private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells["ProductId"].Value.ToString()
!= "")
{
if (rightOnForm.IndexOf("D") != -1 && !chkStatus.Checked)
btnDeleteDetail.Enabled = true;
else
btnDeleteDetail.Enabled = false;
}
}
private void btnDeleteDetail_Click(object sender, EventArgs e)
{
try
{
string ordinalNumber = "";
string invoiceId = "";
string productId = "";
string delete = "";
DataGridViewRow dataGridViewRow = dataGridView1.CurrentRow;
if (dataGridViewRow != null)
{
ordinalNumber =
Convert.ToString(dataGridViewRow.Cells["#"].Value);
invoiceId = txtId.Text;
productId =
Convert.ToString(dataGridViewRow.Cells["ProductId"].Value);
return commandText;
}
private string CreateCommandTextForComboBox()
{
string commandText = "";
commandText = "Select CategoryId, " +
" CategoryNameInVietnamese from Categories" +
" Order by CategoryNameInVietnamese ASC;";
commandText += "Select ManufactureId, " +
" ManufactureName from Manufactures " +
" order by ManufactureName ASC;";
if (rightOnForm.IndexOf("S") != -1)
commandText += "select name, name " +
"from sysusers where hasdbaccess=1";
return commandText;
}
private void FillDataToComboBox()
{
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText =
CreateCommandTextForComboBox();
DataSet dataSet = dataProvider.GetDataSet();
DataTable dataTableProduct = dataSet.Tables[0];
ASUIHelper.FillDataToComboBox(dataTableProduct,
this.cboCategories, "CategoryId",
"CategoryNameInVietnamese", "", "");
DataTable dataTableBatch = dataSet.Tables[1];
ASUIHelper.FillDataToComboBox(dataTableBatch,
this.cboManufacture, "ManufactureId",
"ManufactureName", "", "");
if (rightOnForm.IndexOf("S") != -1)
{
DataTable dataTableUserName = dataSet.Tables[2];
ASUIHelper.FillDataToComboBox(dataTableUserName,
this.cboUserName, "name", "name", "", "Any User");
}
else
{
this.cboUserName.Text = ASParameters.userName;
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Product-
FillDataToComboBox", ex);
}
}
private void FillEnumToComboBox()
{
try
{
cboStatus.Items.Add(new
ASListItem(ASEnum.Activate.All.ToString(), (short)ASEnum.Activate.All));
cboStatus.Items.Add(new
ASListItem(ASEnum.Activate.Continue.ToString(),
(short)ASEnum.Activate.Continue));
cboStatus.Items.Add(new
ASListItem(ASEnum.Activate.Discontinued.ToString(),
(short)ASEnum.Activate.Discontinued));
cboStatus.DisplayMember = "TextField";
cboStatus.ValueMember = "ValueField";
cboStatus.SelectedIndex = 0;
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Product-
FillEnumToComboBox", ex);
}
}
void FillDataToTreeView()
{
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText =
CreateCommandTextForTreeView();
DataTable dataTable = dataProvider.GetDataTable();
ASUIHelper.FillDataToTreeView("Categories",
dataTable, this.tvwCategories);
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Product-FillDataToTreeView",
ex);
}
}
private void FillDataToComboBox(
string cmmandText, ComboBox comboBox,
string textField, string valueField)
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = cmmandText;
DataTable dataTable = dataProvider.GetDataTable();
ASUIHelper.FillDataToComboBox(dataTable,
comboBox, valueField, textField, "", "");
}
private void FillProductsToGridView(string itemId, int level)
{
try
{
string searchByUserName = rightToSeeAllItem;
string status =
Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueField);
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsProducts;3";
dataProvider.CommandType = CommandType.StoredProcedure;
dataTable = dataProvider.GetDataTable(new string[3] {
"@CategoryId", "@ProductStatus", "@UserName" }, new object[3] { itemId,
status, searchByUserName });
ASUIHelper.FillDataToGridView(dataTable,
this.dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForProducts();
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Products-
FillProductsToGridView", dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Products-
FillProductsToGridView", ex);
}
EnableApprovalButton();
}
private void tvwProvinces_AfterSelect(object sender,
TreeViewEventArgs e)
{
if (e.Node.Level >= 1)
{
FillProductsToGridView(Convert.ToString(e.Node.Tag),
e.Node.Level);
ResizeGridViewForProducts(rightOnForm.IndexOf("A") != -1);
}
lblWarning.Text = e.Node.Text;
}
private void dataGridView_DoubleClick(object sender, EventArgs e)
{
DataGridViewRow dataGridViewRow =
dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
btnEdit_Click(sender, e);
}
}
if (rightOnForm.IndexOf("U") != -1 ||
rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
private void EditProduct(string itemId)
{
try
{
txtId.Text = itemId;
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsProducts;5";
dataProvider.CommandType = CommandType.StoredProcedure;
dataTableForEdit = dataProvider.GetDataTable("@ProductId",
itemId);
if (dataTableForEdit.Rows.Count > 0)
{
DataRow dataRow = dataTableForEdit.Rows[0];
cboManufacture.SelectedValue =
dataRow["ManufactureId"];
dtpDate.Value =
Convert.ToDateTime(dataRow["JoinDate"]);
cboCategories.SelectedValue = dataRow["CategoryId"];
txtUnit.Text = Convert.ToString(dataRow["ProductUnit"]);
txtImageLocation.Text =
Convert.ToString(dataRow["ImageLocation"]);
txtVietnameseName.Text =
Convert.ToString(dataRow["ProductNameInVietnamese"]);
txtDescription.Text =
Convert.ToString(dataRow["ProductDescriptionInVietnamese"]);
txtVAT.Text = Convert.ToString(dataRow["VATRate"]);
txtImportTax.Text =
Convert.ToString(dataRow["ImportTaxRate"]);
if (Convert.ToString(dataRow["Discontinued"]) == "True")
{
chkStatus.Checked = true;
btnDiscontinued.Text =
"Activate";
}
else
{
btnDiscontinued.Text = "Discontinued";
chkStatus.Checked = false;
if (rightOnForm.IndexOf("U") != -1)
{
btnAddAndSave.Enabled = true;
}
else
{
btnAddAndSave.Enabled = false;
}
if (rightOnForm.IndexOf("D") != -1)
{
btnDelete.Enabled = true;
}
else
{
btnDelete.Enabled = false;
}
}
ShowProductInStock(txtId.Text);
CreateWarning(dataRow);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Product-EditProduct", ex);
}
}
void ShowProductInStock(string ProductId)
{
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsProducts;8";
dataProvider.CommandType = CommandType.StoredProcedure;
DataTable dataTable =
dataProvider.GetDataTable("@ProductId", ProductId);
ASUIHelper.FillDataToGridView(dataTable,
this.dataGridView1);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForProductInStocks();
ResizeGridViewForProductInStocks();
}
lblRecordText.Text = "Products found:";
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Product-
FillProductToGridView", dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Product-
FillProductToGridView", ex);
}
}
void CreateWarning(DataRow dataRow)
{
lblWarning.Text = "CreatedBy: " +
Convert.ToString(dataRow["CreatedBy"]);
lblWarning.Text += "; CreatedDate: " +
Convert.ToString(dataRow["CreatedDate"]);
lblWarning.Text += "; ModifiedBy: " +
Convert.ToString(dataRow["ModifiedBy"]);
lblWarning.Text += "; ModifiedDate: " +
Convert.ToString(dataRow["ModifiedDate"]);
}
private void dataGridView_CellEnter(object sender,
DataGridViewCellEventArgs e)
{
if (dataGridView.Columns[e.ColumnIndex].Name ==
"Discontinued"
&&
Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueField) !="2")
dataGridView.EditMode =
DataGridViewEditMode.EditOnEnter;
else
dataGridView.EditMode =
DataGridViewEditMode.EditProgrammatically;
}
private void btnPrint_Click(object sender, EventArgs e)
{
frmReports frm = new frmReports();
if (btnAddAndSave.Text == "&Add New")
frm.DataTableToPrint = dataTable;
else
frm.DataTableToPrint = dataTableForEdit;
frm.ReportTypeToPrint = (btnAddAndSave.Text == "&Add New");
frm.ReportNameToPrint = "Products";
frm.ShowDialog();
}
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnUserName_Click(object sender, EventArgs e)
{
string commandText = "select name, name " +
"from sysusers where hasdbaccess=1";
FillDataToComboBox(commandText,
this.cboUserName, "name", "name");
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboCategories.Visible = false;
lblCategories.Visible = false;
lblManufacture.Visible = false;
cboManufacture.Visible = false;
}
private void dataGridView_RowEnter(object sender,
DataGridViewCellEventArgs e)
{
if
(dataGridView.Rows[e.RowIndex].Cells["Status"].Value.ToString() ==
"False")
{
btnDelete.Enabled = false;
}
else
{
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
else
btnDelete.Enabled = false;
}
}
}
}
6.2 Import
☐ Create menu: Inventory Controls-> Imports-> Imports
☐ Create Form (Looking In attach project): frmImports.cs,
frmImportBatchs.cs, frmImportDetails.cs, frmImportTypes.cs
Create Table in SQL Server (Looking in attach database): Imports,
ImportBatchs, ImportDetails, ImportTypes
Create stored procedures in database (Looking in attach database):
udsImports
udsImports;3
udsImports;4
udsImports;5
udsImports;6
udsImports;7
udsImports;8
udsImports;9
udsImportBatchs
udsImportBatchs;2
udsImportBatchs;3
udsImportBatchs;4
udsImportDetails
udsImportTypes
udsImportTypes;2
udsImportTypes;3
udsImportTypes;4
udsImportTypes;5
☐ Interface frmImports.cs:
}
private void FillImportsToGridView(bool search)
{
try
{
string keyword = txtKeyword.Text;
string searchByUserName = rightToSeeAllItem;
string status =
Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueField);
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsImports";
dataProvider.CommandType = CommandType.StoredProcedure;
if (!search)
dataTable = dataProvider.GetDataTable(new string[7] {
"@SupplierId", "BatchId", "@ImportStatus", "@Keyword", "@StartDate",
"@EndDate", "@UserName" }, new object[7] { "", "", status, keyword,
dtpStart.MinDate.ToString(ASParameters.dateFormat),
dtpStart.MaxDate.ToString(ASParameters.dateFormat), searchByUserName
});
else
{
searchByUserName =
Convert.ToString(cboUserName.SelectedValue);
string supplierId =
Convert.ToString(this.cboSuppliers.SelectedValue);
string batchId =
Convert.ToString(this.cboBatch.SelectedValue);
string startDate =
this.dtpStart.Value.ToString(ASParameters.dateFormat);
string endDate =
this.dtpEnd.Value.ToString(ASParameters.dateFormat);
dataTable = dataProvider.GetDataTable(new string[7] {
"@SupplierId", "BatchId", "@ImportStatus", "@Keyword", "@StartDate",
"@EndDate", "@UserName" }, new object[7] { supplierId, batchId, status,
keyword, startDate, endDate, searchByUserName });
}
ASUIHelper.FillDataToGridView(dataTable,
this.dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForColumnForImports();
ResizeGridViewForImports(rightOnForm.IndexOf("A") !=
-1);
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Import-
FillImportToGridView", dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Import-
FillImportToGridView", ex);
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
FillImportsToGridView(panelSearch.Visible);
if (rightOnForm.IndexOf("A") != -1)
{
dataGridView.Columns[0].Visible = true;
btnApprove.Visible = true;
}
else
{
dataGridView.Columns[0].Visible = false;
btnApprove.Visible = false;
}
}
private void btnMore_Click(object sender, EventArgs e)
{
if (panelSearch.Visible == false)
{
panelSearch.Visible = true;
lblSuppliers.Visible = true;
lblBatch.Visible = true;
cboSuppliers.Visible = true;
cboBatch.Visible = true;
lblSuppliers.BringToFront();
lblBatch.BringToFront();
cboSuppliers.BringToFront();
cboBatch.BringToFront();
}
else
{
panelSearch.Visible = false;
lblSuppliers.Visible = false;
lblBatch.Visible = false;
cboSuppliers.Visible = false;
cboBatch.Visible = false;
}
cboSuppliers.SelectedIndex = 0;
cboBatch.SelectedIndex = 0;
}
private void btnAddAndSave_Click(object sender, EventArgs e)
{
switch (btnAddAndSave.Text)
{
case "&Add New":
txtId.Enabled = true;
lblSuppliers.Visible = true;
lblBatch.Visible = true;
cboSuppliers.Visible = true;
cboBatch.Visible = true;
btnAddAndSave.Text = "&Save";
btnEdit.Text = "&Back";
lblHeader.Text = "New Import Slip";
dataGridView.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
btnDelete.Enabled = false;
btnPrint.Enabled = false;
btnApprove.Enabled = false;
AddNewRecord();
break;
case "&Save":
if (SaveImport())
{
lblHeader.Text = "Update Import Slip";
btnAddAndSave.Text = "&Update";
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
if (rightOnForm.IndexOf("A") != -1)
btnApprove.Enabled = true;
btnNewDetail.Enabled = true;
btnPrint.Enabled = true;
lblWarning.Text = "You can add Import Slip Details by
click on Add Detail button.";
}
break;
case "&Update":
if (SaveImport())
{
lblSuppliers.Visible = false;
lblBatch.Visible = false;
cboSuppliers.Visible = false;
cboBatch.Visible = false;
lblHeader.Text = "List of Import Slips";
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
dataGridView.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnUserName_Click(object sender, EventArgs e)
{
string commandText = "select name, name " +
"from sysusers where hasdbaccess=1";
FillDataToComboBox(commandText,
this.cboUserName, "name", "name");
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboSuppliers.Visible = false;
lblSuppliers.Visible = false;
lblBatch.Visible = false;
cboBatch.Visible = false;
}
6.3 Export
☐ Create menu: Inventory Control-> Exports-> Exports
if (rtbDescription.Text == "")
{
rtbDescription.Focus();
return "Please enter Export Description.";
}
if (cboBatch.SelectedIndex == 0)
{
cboBatch.Focus();
return "Please select Export Batch No.";
}
if (cboCustomers.SelectedIndex == 0)
return "Please select Customer Name.";
return valid;
}
void AddNewRecord()
{
try
{
cboBatch.SelectedIndex = 0;
cboCustomers.SelectedIndex = 0;
dataGridView1.DataSource = null;
foreach (Control control in panelDetails.Controls)
{
if (control is TextBox)
((TextBox)control).Text = "";
if (control is RichTextBox)
((RichTextBox)control).Text = "";
if (control is ComboBox)
((ComboBox)control).SelectedIndex = 0;
if (control is CheckBox)
((CheckBox)control).Checked = false;
}
lblWarning.Text = "Save Export Slip Id first and then you can
add Export Slip detail.";
if (ASParameters.autoCreateId)
{
txtId.Text = CreateDefaultValueForId("Exports");
txtId.Enabled = false;
rtbDescription.Focus();
}
else
txtId.Focus();
}
catch (Exception ex)
{
ASUIHelper.WriteMessage("Export-AddNewRecord",
ex.Message);
}
}
string CreateDefaultValueForId(string objectName)
{
string newId = "";
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsGetAutoId";
object[] obj = dataProvider.GeObjects("@TableName",
objectName);
if (dataProvider.ErrorMessage != "")
ASUIHelper.ShowMessageBox("Export-
CreateDefaultValueForId", dataProvider.ErrorMessage);
else
{
string prefix = obj[0].ToString();
int length = Convert.ToInt32(obj[1]);
string lastValue = obj[2].ToString();
int nextNumber =
Convert.ToInt32(lastValue.Substring(prefix.Length)) + 1;
newId = "0000000000000000" + nextNumber.ToString();
newId = prefix + newId.Substring(newId.Length - length +
prefix.Length);
dataProvider.CommandText = "udsUpdLastAutoId";
string[] parameterName = new string[2] { "@TableName",
"@LastId" };
object[] parameterValue = new object[2] { objectName,
newId };
dataProvider.ExecuteNonQuery(parameterName,
parameterValue);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Export-
CreateDefaultValueForId", ex);
}
return newId;
}
bool SaveExport()
{
bool save = false;
string valid = ValidData();
if (valid == "")
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsExports;7";
string[] parameterName = new string[8] { "@Flag",
"@ExportId", "@BatchId", "@ExportTypeId", "@ExportDate",
"@CustomerId", "@DescriptionInVietnamese", "@ExportStatus" };
object[] parameterValue = new object[8] { btnAddAndSave.Text
== "&Save", txtId.Text, cboBatch.SelectedValue, cboType.SelectedValue,
dtpDate.Value.ToString(ASParameters.dateFormat),
cboCustomers.SelectedValue, rtbDescription.Text, chkStatus.Checked };
save = (dataProvider.ExecuteNonQuery(parameterName,
parameterValue) > 0);
if (dataProvider.ErrorMessage != "")
ASUIHelper.ShowMessageBox("SaveExport",
dataProvider.ErrorMessage);
}
else
ASUIHelper.ShowMessageBox("Export-SaveExport", valid);
return save;
}
void ResizeGridViewForExports(bool showApprovalColumn)
{
dataGridView.RowHeadersWidth = 22;
if (showApprovalColumn)
dataGridView.Columns["Approval"].Width = 55;
dataGridView.Columns["Status"].Width = 40;
dataGridView.Columns["ExportId"].Width = 75;
dataGridView.Columns["ExportDate"].Width = 75;
dataGridView.Columns["CustomerId"].Width = 60;
dataGridView.Columns["CompanyNameInVietnamese"].Width =
210;
dataGridView.Columns["DescriptionInVietnamese"].Width =
250;
dataGridView.Columns["Products"].Width = 60;
}
void ResizeGridViewForExportDetails()
{
dataGridView1.RowHeadersWidth = 22;
dataGridView1.Columns["#"].Width = 20;
dataGridView1.Columns["ProductId"].Width = 60;
dataGridView1.Columns["ProductNameInVietnamese"].Width =
250;
dataGridView1.Columns["Quantity"].Width = 80;
dataGridView1.Columns["StockName"].Width = 120;
dataGridView1.Columns["StockId"].Visible= false;
dataGridView1.Columns["ProductUnit"].Width = 80;
}
void ApplyStyleForColumnForExports()
{
DataGridViewCellStyle style = new
DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
style.Format = ASParameters.dateFormat;
dataGridView.Columns["ExportDate"].DefaultCellStyle = style;
style = new DataGridViewCellStyle();
style.Alignment =
DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns["CustomerId"].DefaultCellStyle = style;
}
void ApplyStyleForColumnForExportDetails()
{
DataGridViewCellStyle style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleRight;
style.Format = ASParameters.doubleNumberFormat;
dataGridView1.Columns["Quantity"].DefaultCellStyle = style;
style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns["#"].DefaultCellStyle = style;
dataGridView1.Columns["ProductId"].DefaultCellStyle = style;
dataGridView1.Columns["StockId"].DefaultCellStyle = style;
}
void InitiateDate()
{
string month = ASParameters.currentMonth;
dtpDate.Value = DateTime.Parse(DateTime.Now.Day.ToString() +
month);
dtpDate.MinDate = DateTime.Parse("01/" + month);
int days = DateTime.DaysInMonth(dtpStart.MinDate.Year,
dtpStart.MinDate.Month);
dtpDate.MaxDate = DateTime.Parse(days.ToString() + "/" +
month);
dtpStart.Value = DateTime.Parse("01/" + month);
dtpStart.MinDate = DateTime.Parse("01/" + month);
dtpStart.MaxDate = DateTime.Parse(days.ToString() + "/" +
month);
dtpEnd.MinDate = DateTime.Parse("01/" + month);
dtpEnd.MaxDate = DateTime.Parse(days.ToString() + "/" + month);
dtpEnd.Value = dtpEnd.MaxDate;
}
private void FillExportsToGridView(bool search)
{
try
{
string keyword = txtKeyword.Text;
string searchByUserName = rightToSeeAllItem;
string status =
Convert.ToString(((ASListItem)cboStatus.SelectedItem).ValueField);
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsExports";
dataProvider.CommandType = CommandType.StoredProcedure;
if (!search)
dataTable = dataProvider.GetDataTable(new string[7] {
"@CustomerId", "BatchId", "@ExportStatus", "@Keyword", "@StartDate",
"@EndDate", "@UserName" }, new object[7] { "", "", status, keyword,
dtpStart.MinDate.ToString(ASParameters.dateFormat),
dtpStart.MaxDate.ToString(ASParameters.dateFormat), searchByUserName
});
else
{
searchByUserName =
Convert.ToString(cboUserName.SelectedValue);
string customerId =
Convert.ToString(this.cboCustomers.SelectedValue);
string batchId =
Convert.ToString(this.cboBatch.SelectedValue);
string startDate =
this.dtpStart.Value.ToString(ASParameters.dateFormat);
string endDate =
this.dtpEnd.Value.ToString(ASParameters.dateFormat);
dataTable = dataProvider.GetDataTable(new string[7] {
"@CustomerId", "BatchId", "@ExportStatus", "@Keyword", "@StartDate",
"@EndDate", "@UserName" }, new object[7] { customerId, batchId, status,
keyword, startDate, endDate, searchByUserName });
}
ASUIHelper.FillDataToGridView(dataTable,
this.dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForColumnForExports();
ResizeGridViewForExports(rightOnForm.IndexOf("A") !=
-1);
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Export-
FillExportToGridView", dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Export-
FillExportToGridView", ex);
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
FillExportsToGridView(panelSearch.Visible);
if (rightOnForm.IndexOf("A") != -1)
{
dataGridView.Columns[0].Visible = true;
btnApprove.Visible = true;
}
else
{
dataGridView.Columns[0].Visible = false;
btnApprove.Visible = false;
}
}
private void btnMore_Click(object sender, EventArgs e)
{
if (panelSearch.Visible == false)
{
panelSearch.Visible = true;
lblCustomers.Visible = true;
lblBatch.Visible = true;
cboCustomers.Visible = true;
cboBatch.Visible = true;
lblCustomers.BringToFront();
lblBatch.BringToFront();
cboCustomers.BringToFront();
cboBatch.BringToFront();
}
else
{
panelSearch.Visible = false;
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboCustomers.Visible = false;
cboBatch.Visible = false;
}
cboCustomers.SelectedIndex = 0;
cboBatch.SelectedIndex = 0;
}
private void btnAddAndSave_Click(object sender, EventArgs e)
{
switch (btnAddAndSave.Text)
{
case "&Add New":
txtId.Enabled = true;
lblCustomers.Visible = true;
lblBatch.Visible = true;
cboCustomers.Visible = true;
cboBatch.Visible = true;
btnAddAndSave.Text = "&Save";
btnEdit.Text = "&Back";
lblHeader.Text = "New Export Slip";
dataGridView.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
btnDelete.Enabled = false;
btnPrint.Enabled = false;
btnApprove.Enabled = false;
AddNewRecord();
break;
case "&Save":
if (SaveExport())
{
lblHeader.Text = "Update Export Slip";
btnAddAndSave.Text = "&Update";
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
if (rightOnForm.IndexOf("A") != -1)
btnApprove.Enabled = true;
btnNewDetail.Enabled = true;
btnPrint.Enabled = true;
lblWarning.Text = "You can add Export Slip Details by
click on Add Detail button.";
}
break;
case "&Update":
if (SaveExport())
{
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboCustomers.Visible = false;
cboBatch.Visible = false;
lblHeader.Text = "List of Export Slips";
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
dataGridView.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnUserName_Click(object sender, EventArgs e)
{
string commandText = "select name, name " +
"from sysusers where hasdbaccess=1";
FillDataToComboBox(commandText,
this.cboUserName, "name", "name");
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboCustomers.Visible = false;
lblCustomers.Visible = false;
lblBatch.Visible = false;
cboBatch.Visible = false;
}
}
void ResizeGridView()
{
dataGridView.RowHeadersWidth = 22;
dataGridView.Columns["StockName"].Width = 70;
dataGridView.Columns["ProductId"].Width = 65;
dataGridView.Columns["ProductNameInVietnamese"].Width =
210;
dataGridView.Columns["BeginQuantity"].Width = 80;
dataGridView.Columns["ImportQuantity"].Width = 80;
dataGridView.Columns["ExportQuantity"].Width = 80;
dataGridView.Columns["EndQuantity"].Width = 80;
}
namespace AccountSystem
{
public partial class frmUpdateStock : Form
{
public frmUpdateStock ()
{
InitializeComponent();
}
DataTable dataTable = null ;
#region Permission
string rightOnForm = "R" ;
void CheckPermission()
{
rightOnForm = ASPermission.GetPermissionOnFunction( "UpdateStock" );
if (rightOnForm.IndexOf( "C" ) == -1)
{
btnCalculate.Enabled = false ;
btnFillUpdateQtty.Enabled = false ;
}
else
{
btnCalculate.Enabled = true ;
btnFillUpdateQtty.Enabled = true ;
}
}
#endregion
private void btnRefresh_Click( object sender, EventArgs e)
{
string stockId =
Convert.ToString(cboStock.SelectedValue);
FillDataToGridView(stockId);
}
private void FillDataToGridView( string stockId)
{
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsProductStatus" ;
dataProvider.CommandType = CommandType.StoredProcedure;
dataTable = dataProvider.GetDataTable( "@StockId" , stockId);
ASUIHelper.FillDataToGridView(dataTable, this .dataGridView);
if (dataTable.Rows.Count > 0)
{
ApplyStyleForColumn();
ResizeGridView();
}
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "" )
{
ASUIHelper.ShowMessageBox( "ProductStatus-FillDataToGridView" ,
dataProvider.ErrorMessage);
}
if (dataTable.Rows.Count > 0)
{
btnPrint.Enabled = true ;
}
else
{
btnPrint.Enabled = false ;
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox( "ProductStatus-FillDataToGridView" , ex);
}
}
void ApplyStyleForColumn()
{
if (!dataGridView.Columns.Contains( "UpdateQtty" ))
dataGridView.Columns.Add( "UpdateQtty" , "UpdateQtty" );
DataGridViewCellStyle style = new DataGridViewCellStyle();
style.Format = ASParameters.integerNumberFormat;
style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView.Columns[ "BeginQtty" ].DefaultCellStyle = style;
dataGridView.Columns[ "ImportQtty" ].DefaultCellStyle = style;
dataGridView.Columns[ "ExportQtty" ].DefaultCellStyle = style;
dataGridView.Columns[ "EndQtty" ].DefaultCellStyle = style;
dataGridView.Columns[ "QttyInStock" ].DefaultCellStyle = style;
dataGridView.Columns[ "BadQtty" ].DefaultCellStyle = style;
dataGridView.Columns[ "UpdateQtty" ].DefaultCellStyle = style;
style = new DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns[ "ProductId" ].Visible = false ;
dataGridView.Columns[ "StockId" ].Visible = false ;
}
void ResizeGridView()
{
dataGridView.RowHeadersWidth = 22;
dataGridView.Columns[ "StockName" ].Width = 65;
dataGridView.Columns[ "ProductId" ].Width = 60;
dataGridView.Columns[ "ProductNameInVietnamese" ].Width = 190;
dataGridView.Columns[ "BeginQtty" ].Width = 55;
dataGridView.Columns[ "ImportQtty" ].Width = 60;
dataGridView.Columns[ "ExportQtty" ].Width = 60;
dataGridView.Columns[ "EndQtty" ].Width = 60;
dataGridView.Columns[ "QttyInStock" ].Width = 65;
dataGridView.Columns[ "BadQtty" ].Width = 50;
dataGridView.Columns[ "UpdateQtty" ].Width = 60;
}
private void btnPrint_Click( object sender, EventArgs e)
{
frmReports frm = new frmReports();
frm.DataTableToPrint = dataTable;
frm.ReportTypeToPrint = true ;
frm.ReportNameToPrint = "ProductStatus" ;
frm.ShowDialog();
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox( "Inventory Control-FillDataToComboBox" , ex);
}
}
private string CreateCommandTextForComboBox()
{
string commandText = "" ;
commandText = "Select StockId, " +
" StockName from Stocks" +
" Order by StockName ASC;" ;
return commandText;
}
}
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox( "btnCalculate_Click" , ex);
}
}
private void btnFillUpdateQtty_Click( object sender, EventArgs e)
{
try
{
foreach (DataGridViewRow row in dataGridView.Rows)
{
if (rdoEndQttyToQttyInStock.Checked)
row.Cells[ "UpdateQtty" ].Value = row.Cells[ "EndQtty" ].Value;
else
row.Cells[ "UpdateQtty" ].Value = row.Cells[ "QttyInStock" ].Value;
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox( "btnFillUpdateQtty_Click" , ex);
}
}
}
}
namespace AccountSystem
{
public partial class frmParameters : Form
{
public frmParameters ()
{
InitializeComponent();
}
void PutParameters()
{
ASParameters.currentMonth = txtCurrentMonth.Text;
ASParameters.welcomeMessage = txtWelcomeMessage.Text;
ASParameters.dateFormat = txtDateFormat.Text;
ASParameters.doubleNumberFormat = txtDoubleNumberFormat.Text;
ASParameters.integerNumberFormat = txtIntegerNumberFormat.Text;
ASParameters.autoCreateId = chkAutoCreateId.Checked;
ASParameters.showToolTipOnDataGrid = chkShowToolTipOnDataGrid.Checked;
}
private void btnUpdate_Click( object sender, EventArgs e)
{
try
{
string [] parameterName = new string [7]{ "@CurrentMonth" ,
"@WelcomeMessage" ,
"@AutoCreateId" , "@ShowToolTipOnDataGrid" ,
"@DateFormat" , "@DoubleNumberFormat" ,
"@IntegerNumberFormat" };
object [] parameterValue = new object [7]{ txtCurrentMonth.Text,
txtWelcomeMessage.Text,
chkAutoCreateId.Checked, chkShowToolTipOnDataGrid.Checked,
txtDateFormat.Text, txtDoubleNumberFormat.Text,
txtIntegerNumberFormat.Text };
ASDataProvider asDataProvider = new ASDataProvider();
asDataProvider.CommandText = "udsParameters;2" ;
asDataProvider.CommandType = CommandType.StoredProcedure;
asDataProvider.ExecuteNonQuery(parameterName, parameterValue);
PutParameters();
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox( "btnUpdate_Click" , ex.Message);
}
}
}
}
☐ Let's ask question or review about this chapter, let's me see you learned
something from this book.
7.3 Configurations application
☐Connecting to database
☐View report
Declare in file App.config:
Chapter 8: Reports module
☐Change the path to report folder in file App.config to view report in in
project
Example:
< add key = "ReportPath " value = "D:\AccountSystem\AccountSystem\Reports\ " />
namespace AccountSystem
{
public partial class frmReports : Form
{
string reportPath = "" ;
string reportName = "" ;
string [] tableNames = null ;
public frmReports ()
{
InitializeComponent();
ASConfig config = new ASConfig();
reportPath = config.GetReportPath();
}
if (i == 0)
{
dataSource = new ReportDataSource(dataSetName + tableNames[i], this
.dataTableToPrint);
this .reportViewer1.LocalReport.DataSources.Add(dataSource);
}
if (i == 1)
{
dataSource = new
ReportDataSource(dataSetName + tableNames[i], this
.subDataTableToPrint);
this .reportViewer1.LocalReport.DataSources.Add(dataSource);
}
}
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Function-
FillDataToComboBox", ex);
}
}
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Function";
dataGridView.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
string itemId =
Convert.ToString(dataGridViewRow.Cells["FunctionId"].Value);
EditFunction(itemId);
}
break;
case "&Back":
lblModules.Visible = false;
cboModules.Visible = false;
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Function";
lblWarning.Text = "Ready...";
dataGridView.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
if (rightOnForm.IndexOf("U") != -1 ||
rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
private void EditFunction(string itemId)
{
try
{
txtId.Text = itemId;
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsFunctions;4";
dataProvider.CommandType = CommandType.StoredProcedure;
dataTableForEdit = dataProvider.GetDataTable("@FunctionId",
itemId);
if (dataTableForEdit.Rows.Count > 0)
{
DataRow dataRow = dataTableForEdit.Rows[0];
cboModules.SelectedValue = dataRow["ModuleId"];
txtDescription.Text =
Convert.ToString(dataRow["FunctionDescription"]);
txtName.Text =
Convert.ToString(dataRow["FunctionName"]);
FillPermissionToGridView(itemId);
ResizeGridViewForPermission();
ApplyStyleForPermission();
if (rightOnForm.IndexOf("U") != -1)
{
btnAddAndSave.Enabled = true;
}
else
{
btnAddAndSave.Enabled = false;
}
if (rightOnForm.IndexOf("D") != -1)
{
btnDelete.Enabled = true;
}
else
{
btnDelete.Enabled = false;
}
CreateWarning(dataRow);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Function-EditFunction", ex);
}
}
void CreateWarning(DataRow dataRow)
{
lblWarning.Text = "CreatedBy: " +
Convert.ToString(dataRow["CreatedBy"]);
lblWarning.Text += "; CreatedDate: " +
Convert.ToString(dataRow["CreatedDate"]);
lblWarning.Text += "; ModifiedBy: " +
Convert.ToString(dataRow["ModifiedBy"]);
lblWarning.Text += "; ModifiedDate: " +
Convert.ToString(dataRow["ModifiedDate"]);
}
cboModules.SelectedIndex = 0;
dataGridView1.DataSource = null;
foreach (Control control in panelDetails.Controls)
{
if (control is TextBox)
((TextBox)control).Text = "";
if (control is RichTextBox)
((RichTextBox)control).Text = "";
if (control is ComboBox)
((ComboBox)control).SelectedIndex = 0;
if (control is CheckBox)
((CheckBox)control).Checked = false;
}
if (ASParameters.autoCreateId)
{
txtId.Text = CreateDefaultValueForId("Functions");
txtId.Enabled = false;
txtDescription.Focus();
}
else
txtId.Focus();
}
catch (Exception ex)
{
ASUIHelper.WriteMessage("Function-AddNewRecord",
ex.Message);
}
}
string CreateDefaultValueForId(string objectName)
{
string newId = "";
try
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsGetAutoId";
object[] obj = dataProvider.GeObjects("@TableName",
objectName);
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Function-
CreateDefaultValueForId", dataProvider.ErrorMessage);
}
else
{
string prefix = obj[0].ToString();
int length = Convert.ToInt32(obj[1]);
string lastValue = obj[2].ToString();
int nextNumber =
Convert.ToInt32(lastValue.Substring(prefix.Length)) + 1;
newId = "0000000000000000" + nextNumber.ToString();
newId = prefix + newId.Substring(newId.Length - length +
prefix.Length);
dataProvider.CommandText = "udsUpdLastAutoId";
string[] parameterName = new string[2] { "@TableName",
"@LastId" };
object[] parameterValue = new object[2] { objectName,
newId };
dataProvider.ExecuteNonQuery(parameterName,
parameterValue);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Function-
CreateDefaultValueForId", ex);
}
return newId;
}
bool SaveFunction()
{
bool save = false;
string valid = ValidData();
if (valid == "")
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsFunctions;5";
string[] parameterName = new string[5] { "@Flag",
"@FunctionId", "@ModuleId", "@FunctionDescription", "@FunctionName"
};
object[] parameterValue = new object[5] { btnAddAndSave.Text
== "&Save", txtId.Text, cboModules.SelectedValue, txtDescription.Text,
txtName.Text };
save = (dataProvider.ExecuteNonQuery(parameterName,
parameterValue) > 0);
if (dataProvider.ErrorMessage != "")
ASUIHelper.ShowMessageBox("SaveFunction",
dataProvider.ErrorMessage);
}
else
ASUIHelper.ShowMessageBox("Function-SaveFunction",
valid);
return save;
}
void ResizeGridViewForFunctions(bool showApprovalColumn)
{
dataGridView.RowHeadersWidth = 22;
dataGridView.Columns["FunctionId"].Width = 75;
dataGridView.Columns["FunctionName"].Width = 250;
dataGridView.Columns["ModuleId"].Width = 60;
dataGridView.Columns["FunctionDescription"].Width = 250;
}
void ResizeGridViewForPermission()
{
dataGridView1.RowHeadersWidth = 22;
dataGridView1.Columns["UserId"].Width = 160;
dataGridView1.Columns["Select"].Width = 60;
dataGridView1.Columns["Insert"].Width = 60;
dataGridView1.Columns["Update"].Width = 60;
dataGridView1.Columns["Delete"].Width = 60;
dataGridView1.Columns["Approval"].Width = 60;
dataGridView1.Columns["ViewAll"].Width = 60;
dataGridView1.Columns["Calculate"].Width = 60;
dataGridView1.Columns["History"].Width = 60;
}
void ApplyStyleForColumnForFunctions()
{
DataGridViewCellStyle style = new
DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns["FunctionId"].DefaultCellStyle = style;
dataGridView.Columns["ModuleId"].DefaultCellStyle = style;
}
void ApplyStyleForPermission()
{
DataGridViewCellStyle style = new
DataGridViewCellStyle();
style.Alignment =
DataGridViewContentAlignment.MiddleCenter;
dataGridView1.Columns["Select"].DefaultCellStyle = style;
dataGridView1.Columns["Insert"].DefaultCellStyle = style;
dataGridView1.Columns["Update"].DefaultCellStyle = style;
dataGridView1.Columns["Delete"].DefaultCellStyle = style;
dataGridView1.Columns["Approval"].DefaultCellStyle = style;
dataGridView1.Columns["ViewAll"].DefaultCellStyle = style;
dataGridView1.Columns["Calculate"].DefaultCellStyle = style;
dataGridView1.Columns["History"].DefaultCellStyle = style;
}
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnHide_Click(object sender, EventArgs e)
{
panelSearch.Visible = false;
cboModules.Visible = false;
lblModules.Visible = false;
}
private void frmFunctions_Load(object sender, EventArgs e)
{
CheckPermission();
lblHeader.Text = "List of Functions";
FillDataToComboBox();
}
}
}
9.2 Module
☐ Create menu:
☐ Create Form (Looking In attach project): frmModules.cs
Create Table in SQL Server (Looking in attach database): Modules
Create stored procedures in database (Looking in attach database):
udsModules
☐ Interface frmModules.cs:
AddNewRecord();
break;
case "&Save":
if (SaveModule())
{
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
lblHeader.Text = "Lits of Modules";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnDelete.Enabled = true;
btnPrint.Enabled = true;
}
break;
case "&Update":
if (SaveModule())
{
lblHeader.Text = "List of Modules";
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
btnPrint.Enabled = true;
switch (btnEdit.Text)
{
case "&Edit":
txtId.Enabled = false;
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Modules";
panelList.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
DataGridViewRow dataGridViewRow =
dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
string itemId =
Convert.ToString(dataGridViewRow.Cells["ModuleId"].Value);
EditModule(itemId);
}
break;
case "&Back":
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Modules";
lblWarning.Text = "Ready...";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
if (rightOnForm.IndexOf("U") != -1 ||
rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
}
private void dataGridView_Click(object sender, EventArgs e)
{
if (ASParameters.showToolTipOnDataGrid)
{
string dataToShow = CreateToolTipText();
this.toolTip1.SetToolTip(dataGridView, dataToShow);
this.toolTip1.ToolTipTitle = "Modules";
}
}
#endregion
#region Fill data into control
string CreateToolTipText()
{
string toolTipText = "";
DataGridViewRow row = dataGridView.CurrentRow;
toolTipText = "ModuleId: " +
row.Cells["ModuleId"].Value.ToString();
toolTipText += "\rModuleName: " +
row.Cells["ModuleName"].Value.ToString();
toolTipText += "\rModuleDescription: " +
row.Cells["ModuleDescription"].Value.ToString();
return toolTipText;
}
txtId.Focus();
}
catch (Exception ex)
{
ASUIHelper.WriteMessage("Module-AddNewRecord",
ex.Message);
}
}
void ResizeGridView()
{
dataGridView.RowHeadersWidth = 22;
dataGridView.Columns["ModuleId"].Width = 65;
dataGridView.Columns["ModuleName"].Width = 200;
dataGridView.Columns["ModuleDescription"].Width =
400;
}
void ApplyStyleForColumn()
{
DataGridViewCellStyle style = new
DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns["ModuleId"].DefaultCellStyle =
style;
}
#endregion
#region Save/Delete and Edit
bool SaveModule()
{
bool save = false;
string valid = ValidData();
if (valid == "")
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsModules;5";
string[] parameterName = new string[4] { "@Flag",
"@ModuleId", "@ModuleName" , "@ModuleDescription"};
object[] parameterValue = new object[4] { btnAddAndSave.Text
== "&Save", txtId.Text, txtName.Text, txtAddress.Text};
save = (dataProvider.ExecuteNonQuery(parameterName,
parameterValue) > 0);
if(dataProvider.ErrorMessage !="")
ASUIHelper.ShowMessageBox("SaveModule",
dataProvider.ErrorMessage);
}
else
ASUIHelper.ShowMessageBox("Module-SaveModule", valid);
return save;
}
string DeleteModule(string itemId)
{
string delete = "";
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsModules;3";
if (dataProvider.ExecuteNonQuery("@ModuleId", itemId) == 0)
delete = dataProvider.ErrorMessage;
return delete;
}
#endregion
private void frmModules_Load(object sender, EventArgs e)
{
try
{
CheckPermission();
lblHeader.Text = "List of Modules";
FillModulesToGridView();
ResizeGridView();
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Module-Load", ex);
}
}
}
}
string ValidData()
{
string valid = "";
if (cboUserName.SelectedIndex == 0)
return "Please select User Name.";
return valid;
}
☐ Let's ask question or review about this chapter, let's me see you learned
something from this book.
9.4 Apply permission for functions and menus
Double click on row to set permission for each user:
Chapter 10: Directories
❖ Create tables directory in SQL Server: Countries, Provinces, Banks,
Manufactures, Currencies, Types include table: CustomerTypes, SupplierTypes,
ImportTypes, ExportTypes, SalesInvoiceTypes, PurchaseInvoiceTypes.
❖ Create form in project: frmCountries.cs, frmProvinces.cs, frmBanks.cs,
frmManufactures.cs, frmCurrencies.cs, Type form include: frmCustomerTypes,
frmSupplierTypes, frmImportTypes, frmExportTypes, frmSalesInvoiceTypes,
frmPurchaseInvoiceTypes.
❖ Create stored procedures for directories: udsCountries, udsProvinces,
udsBanks, udsManufactures, udsCurrencies, Types include : udsCustomerTypes,
udsSupplierTypes, udsImportTypes, udsExportTypes, udsSalesInvoiceTypes,
udsPurchaseInvoiceTypes.
10.1 Countries Form frmCountries.cs
☐ Create menu:
☐ Create Form (Looking In attach project) frmCountries.cs
Create Table in SQL Server (Looking in attach database): Countries
Create stored procedures in database (Looking in attach database):
udsCountries
☐ Interface frmCountries.cs:
AddNewRecord();
break;
case "&Save":
if (SaveCountry())
{
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
lblHeader.Text = "Lits of Countries";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnDelete.Enabled = true;
btnPrint.Enabled = true;
}
break;
case "&Update":
if (SaveCountry())
{
lblHeader.Text = "List of Countries";
btnAddAndSave.Text = "&Add New";
btnEdit.Text = "&Edit";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
btnSearch_Click(sender, e);
btnPrint.Enabled = true;
btnDelete.Enabled = true;
}
break;
}
}
private void btnEdit_Click(object sender, EventArgs e)
{
btnPrint.Enabled = true;
switch (btnEdit.Text)
{
case "&Edit":
txtId.Enabled = false;
btnEdit.Text = "&Back";
btnAddAndSave.Text = "&Update";
lblHeader.Text = "Edit Countries";
panelList.Visible = false;
lblRecordText.Visible = false;
lblRecords.Visible = false;
panelHeader.Visible = false;
panelDetails.Visible = true;
DataGridViewRow dataGridViewRow =
dataGridView.CurrentRow;
if (dataGridViewRow != null)
{
string itemId =
Convert.ToString(dataGridViewRow.Cells["CountryId"].Value);
EditCountry(itemId);
}
break;
case "&Back":
btnEdit.Text = "&Edit";
btnAddAndSave.Text = "&Add New";
lblHeader.Text = "List of Countries";
lblWarning.Text = "Ready...";
panelList.Visible = true;
lblRecordText.Visible = true;
lblRecords.Visible = true;
panelHeader.Visible = true;
panelDetails.Visible = false;
if (rightOnForm.IndexOf("U") != -1 ||
rightOnForm.IndexOf("I") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
break;
}
}
private void btnPrint_Click(object sender, EventArgs e)
{
frmReports frm = new frmReports();
frm.DataTableToPrint = dataTable;
frm.ReportTypeToPrint = (btnAddAndSave.Text == "&Add New");
frm.ReportNameToPrint = "Countries";
frm.ShowDialog();
}
return toolTipText;
}
private string CreateCommandText()
{
string commandText = "";
if (rightOnForm.IndexOf("S") != -1)
commandText += "select name, name " +
"from sysusers where hasdbaccess=1";
return commandText;
}
private void FillDataToComboBox(
string cmmandText, ComboBox comboBox,
string textField, string valueField)
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = cmmandText;
DataTable dataTable = dataProvider.GetDataTable();
ASUIHelper.FillDataToComboBox(dataTable,
comboBox, valueField, textField, "", "");
}
private void FillCountriesToGridView()
{
try
{
string keyword = txtKeyword.Text;
string searchByUserName = rightToSeeAllItem;
if (keyword != "")
keyword = "%" + keyword + "%";
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsCountries";
dataProvider.CommandType = CommandType.StoredProcedure;
dataTable = dataProvider.GetDataTable("@Keyword", keyword
);
ASUIHelper.FillDataToGridView(dataTable,
this.dataGridView);
if (dataTable.Rows.Count>0)
ApplyStyleForColumn();
lblRecords.Text = dataTable.Rows.Count.ToString();
if (dataProvider.ErrorMessage != "")
{
ASUIHelper.ShowMessageBox("Country-
FillCountriesToGridView", dataProvider.ErrorMessage);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Country-
FillCountriesToGridView", ex);
}
}
#endregion
#region Reset Control and Valid data
string ValidData()
{
string valid = "";
if (txtId.Text == "")
{
txtId.Focus();
return "Please enter Country Code.";
}
if (txtName.Text == "")
{
txtName.Focus();
return "Please enter Country Name.";
}
return valid;
}
void AddNewRecord()
{
try
{
foreach (Control control in panelDetails.Controls)
{
if (control is TextBox)
((TextBox)control).Text = "";
if (control is RichTextBox)
((RichTextBox)control).Text = "";
if (control is ComboBox)
((ComboBox)control).SelectedIndex = 0;
if (control is CheckBox)
((CheckBox)control).Checked = false;
}
txtId.Focus();
}
catch (Exception ex)
{
ASUIHelper.WriteMessage("Country-AddNewRecord",
ex.Message);
}
}
void ResizeGridView()
{
dataGridView.RowHeadersWidth = 22;
dataGridView.Columns["CountryId"].Width = 65;
dataGridView.Columns["CountryName"].Width =
600;
}
void ApplyStyleForColumn()
{
DataGridViewCellStyle style = new
DataGridViewCellStyle();
style.Alignment = DataGridViewContentAlignment.MiddleCenter;
dataGridView.Columns["CountryId"].DefaultCellStyle =
style;
}
#endregion
#region Save/Delete and Edit
bool SaveCountry()
{
bool save = false;
string valid = ValidData();
if (valid == "")
{
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsCountries;5";
string[] parameterName = new string[3] { "@Flag",
"@CountryId", "@CountryName" };
object[] parameterValue = new object[3] { btnAddAndSave.Text
== "&Save", txtId.Text, txtName.Text};
save = (dataProvider.ExecuteNonQuery(parameterName,
parameterValue) > 0);
if(dataProvider.ErrorMessage !="")
ASUIHelper.ShowMessageBox("SaveCountry",
dataProvider.ErrorMessage);
}
else
ASUIHelper.ShowMessageBox("Country-SaveCountry", valid);
return save;
}
string DeleteCountry(string itemId)
{
string delete = "";
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandType = CommandType.StoredProcedure;
dataProvider.CommandText = "udsCountries;3";
if (dataProvider.ExecuteNonQuery("@CountryId", itemId) == 0)
delete = dataProvider.ErrorMessage;
return delete;
}
private void EditCountry(string itemId)
{
try
{
txtId.Text = itemId;
ASDataProvider dataProvider = new ASDataProvider();
dataProvider.CommandText = "udsCountries;4";
dataProvider.CommandType = CommandType.StoredProcedure;
DataTable dataTable = dataProvider.GetDataTable(
"@CountryId", itemId );
if (dataTable.Rows.Count > 0)
{
DataRow dataRow =
dataTable.Rows[0];
txtName.Text =
Convert.ToString(dataRow["CountryName"]);
if (rightOnForm.IndexOf("U") != -1)
btnAddAndSave.Enabled = true;
else
btnAddAndSave.Enabled = false;
if (rightOnForm.IndexOf("D") != -1)
btnDelete.Enabled = true;
else
btnDelete.Enabled = false;
CreateWarning(dataRow);
}
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Country-EditCountry", ex);
}
}
void CreateWarning(DataRow dataRow)
{
lblWarning.Text = "CreatedBy: " +
Convert.ToString(dataRow["CreatedBy"]);
lblWarning.Text += "; CreatedDate: " +
Convert.ToString(dataRow["CreatedDate"]);
lblWarning.Text += "; ModifiedBy: " +
Convert.ToString(dataRow["ModifiedBy"]);
lblWarning.Text += "; ModifiedDate: " +
Convert.ToString(dataRow["ModifiedDate"]);
}
#endregion
private void frmCountries_Load(object sender, EventArgs e)
{
try
{
CheckPermission();
lblHeader.Text = "List of Countries";
FillCountriesToGridView();
ResizeGridView();
}
catch (Exception ex)
{
ASUIHelper.ShowMessageBox("Country-Load", ex);
}
}
}
}
https://tinyurl.com/yx27erbx
(To Extract file after download you can use: Winrar, Winzip, 7Zip)
Chapter12: Bonus
12.1 Powerful project source code: Read Real Serial number of HDD,
SSD ID without WMI
This is powerful code to read any serial of HDD, SSD that you won't
find anywhere
☐ Link download bellow:
https://tinyurl.com/y9lozgcp
CONGRATULATIONS!