using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using WX.CRM.DAL.QH;
using WX.CRM.IBLL.QH;
using WX.CRM.Model.Enum;
namespace WX.CRM.BLL.QH
{
public class QH_MONTHLYSTATEMENT_BL : IQH_MONTHLYSTATEMENT_Q, IQH_MONTHLYSTATEMENT
{
public Model.Entity.QH_MONTHLYSTATEMENT getMonthlyStatement(decimal monthCode)
{
using (var contex = new Model.Entity.crmContext())
{
return contex.QH_MONTHLYSTATEMENT.FirstOrDefault(p => p.MONTHCODE == monthCode && p.OPTYPE == 1);
}
}
public decimal? getMaxMonthCode()
{
using (var contex = new Model.Entity.crmContext())
{
var list = contex.QH_MONTHLYSTATEMENT.Where(p => p.OPTYPE == 1);
return list.Any() ? (decimal?)list.Max(p => p.MONTHCODE) : null;
}
}
///
/// 是否已经月结
///
/// 月结码
///
public bool GetIsYueJie(decimal monthcode)
{
using (var contex = new Model.Entity.crmContext())
{
var model = contex.QH_MONTHLYSTATEMENT.Where(m => m.MONTHCODE == monthcode).OrderByDescending(m => m.OPTIME).FirstOrDefault();
if (model == null)
{
return false;//没有月结
}
else if (model.OPTYPE == -1)
{
return false;//已做反月结
}
else
return true;
}
}
public List GetAllOpYeanAndMonth()
{
using (var db = new Model.Entity.crmContext())
{
return db.QH_MONTHLYSTATEMENT.Where(p => p.OPTYPE == 1).Select(m => m.MONTHCODE).Distinct().OrderByDescending(m => m).ToList();
}
}
///
/// 获取所有月结年月(不包含反月结)
///
///
public List GetAllMonth()
{
using (var db = new Model.Entity.crmContext())
{
return db.QH_MONTHLYSTATEMENT.Where(o => o.OPTYPE == 1).Select(m => m.MONTHCODE).Distinct().OrderByDescending(m => m).ToList();
}
}
public List GetAllBalanceCode()
{
using (var db = new Model.Entity.crmContext())
{
List list0 = db.QH_MONTHLYSTATEMENT.Where(p => p.OPTYPE == -1).Select(f => f.MONTHLYPKID).Distinct().ToList();
return db.QH_MONTHLYSTATEMENT.Where(p => p.OPTYPE == 1 && !list0.Contains(p.PKID)).Select(m => m.MONTHCODE).Distinct().ToList();
}
}
public List GetMONTHLYSTATEMENTList(int pageIndex, int pageSize, out int rcount)
{
rcount = 0;
using (var db = new Model.Entity.crmContext())
{
var q = db.QH_MONTHLYSTATEMENT.OrderByDescending(p => p.PKID);
rcount = q.Count();
int startIndex = 0;
if (pageIndex > 1)
startIndex = (pageIndex - 1) * pageSize;
return q.Skip(startIndex).Take(pageSize).ToList();
}
}
public bool MonthBalance(int balanceCode, decimal opUser)
{
return new QH_Gonthlystatement_DAL().MonthBalance(balanceCode, opUser);
}
public bool MonthBalanceStep(int balanceCode, decimal opUser)
{
return new QH_Gonthlystatement_DAL().MonthBalanceStep(balanceCode, opUser);
}
public bool MonthUnBalance(int balanceCode, decimal opUser, decimal baseRef)
{
return new QH_Gonthlystatement_DAL().MonthUnBalance(balanceCode, opUser, baseRef);
}
public DataSet MonthCheckBalance(int balanceCode)
{
return new QH_Gonthlystatement_DAL().MonthCheckBalance(balanceCode);
}
public bool OrganizeStructureBackup(int balanceCode, BakOrganizeStructure bakType)
{
return new QH_Gonthlystatement_DAL().OrganizeStructureBackup(balanceCode, bakType);
}
public bool GenNextRule(decimal opUser)
{
return new QH_Gonthlystatement_DAL().GenNextRule(opUser);
}
public List GetMonthByUserPerformanct()
{
List lis = new List();
var m = getMaxMonthCode();
var curDate = System.DateTime.Now;
lis.Clear();
if (m == null)
{
lis.Add(curDate.ToString("yyyyMM"));
curDate = curDate.AddMonths(-1);
lis.Add(curDate.ToString("yyyyMM"));
curDate = curDate.AddMonths(-1);
lis.Add(curDate.ToString("yyyyMM"));
}
else
{
string s = string.Format("{0}01", m);
curDate = System.DateTime.ParseExact(s, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
curDate = curDate.AddMonths(1);
lis.Add(curDate.ToString("yyyyMM"));
if (DateTime.Now > curDate)
{
curDate = curDate.AddMonths(1);
lis.Add(curDate.ToString("yyyyMM"));
}
}
return lis;
}
public bool BackupCommissionRule(int balanceCode, decimal opUser)
{
return new QH_Gonthlystatement_DAL().BackupCommissionRule(balanceCode, opUser);
}
}
}