narsil/Tanshu.Accounts.PointOfSale/Reports/SaleAnalysisForm.cs
2018-08-24 16:11:33 +05:30

98 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Tanshu.Accounts.Repository;
using Tanshu.Accounts.Contracts;
namespace Tanshu.Accounts.PointOfSale
{
public partial class frmSaleAnalysisForm : Form
{
IList<SalesAnalysis> _list;
bool _loading;
public frmSaleAnalysisForm()
{
_loading = true;
InitializeComponent();
}
private void SaleAnalysisForm_Load(object sender, EventArgs e)
{
dtpStart.Format = DateTimePickerFormat.Custom;
dtpStart.CustomFormat = "dd-MMM-yyyy";
dtpStart.Value = DateTime.Now.Date;
dtpFinish.Format = DateTimePickerFormat.Custom;
dtpFinish.CustomFormat = "dd-MMM-yyyy";
dtpFinish.Value = DateTime.Now.Date;
_loading = false;
ShowStatement();
}
private void dtpStart_ValueChanged(object sender, EventArgs e)
{
ShowStatement();
}
private void ShowStatement()
{
if (_loading)
return;
if (DateTime.Today.Subtract(dtpStart.Value.Date).Days > 5 &&
!Session.IsAllowed("Accounts Audit"))
return;
var start = dtpStart.Value.Date.AddHours(6);
var finish = dtpFinish.Value.Date.AddDays(1).AddHours(5);
_list = new List<SalesAnalysis>();
if (finish > start)
{
var list = new List<SalesAnalysis>();
list.AddRange(SalesAnalysisBI.GetSale(start, finish));
list.Add(new SalesAnalysis() { GroupType = " -- ", Amount = 0 });
list.AddRange(SalesAnalysisBI.GetSettlements(start, finish));
list.Add(new SalesAnalysis() { GroupType = " -- ", Amount = 0 });
var sc = SalesAnalysisBI.GetServiceCharge(start, finish);
if (sc != null)
list.Add(sc);
foreach (var item in SalesAnalysisBI.GetServiceTax(start, finish))
{
if (item.TaxAmount != 0)
{
list.Add(new SalesAnalysis() { GroupType = item.Name, Amount = item.TaxAmount });
}
}
foreach (var item in SalesAnalysisBI.GetVat(start, finish))
{
if (item.TaxAmount != 0)
{
list.Add(new SalesAnalysis() { GroupType = item.Name, Amount = item.TaxAmount });
}
}
_list = list;
}
dgvSale.AutoGenerateColumns = true;
dgvSale.DataSource = _list;
dgvSale.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgvSale.Columns[1].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0";
dgvSale.Columns[1].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
}
private void dtpFinish_ValueChanged(object sender, EventArgs e)
{
ShowStatement();
}
private void btnPrint_Click(object sender, EventArgs e)
{
if (_list != null)
{
var startDate = dtpStart.Value.Date.AddHours(6);
var finishDate = dtpFinish.Value.Date.AddDays(1).AddHours(5);
Accounts.Print.Thermal.PrintSale(Session.User.Name, _list, startDate, finishDate);
}
}
}
}