using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using CY.IDAL;
|
using System.Data.SqlClient;
|
using System.Data;
|
using CY.Infrastructure.Query;
|
using CY.Model;
|
using System.Transactions;
|
|
namespace CY.SQLDAL
|
{
|
public class OA_FirmAccountRecordDAL : IOA_FirmAccountRecordDAL
|
{
|
|
private Database _dataBase = null;
|
|
public OA_FirmAccountRecordDAL()
|
{
|
_dataBase = new Database();
|
}
|
|
public OA_FirmAccountRecordDAL(Database dataBase)
|
{
|
_dataBase = dataBase;
|
}
|
|
/// <summary>
|
/// 新增
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public bool InserModel(Infrastructure.Domain.IAggregateRoot model)
|
{
|
Model.OA_FirmAccountRecord trueModel = model as Model.OA_FirmAccountRecord;
|
if (trueModel == null)
|
{
|
return false;
|
}
|
IList<SqlParameter> sqlParms = new List<SqlParameter>()
|
{
|
new SqlParameter("@SubjectId",trueModel.SubjectId),
|
new SqlParameter("@AccountId",trueModel.AccountId),
|
new SqlParameter("@RecordTypeId",trueModel.RecordTypeId),
|
new SqlParameter("@Money",trueModel.Money),
|
new SqlParameter("@PaymentUnit",trueModel.PaymentUnit),
|
new SqlParameter("@OperationalMatters",trueModel.OperationalMatters),
|
new SqlParameter("@LastUpdateTime",trueModel.LastUpdateTime),
|
new SqlParameter("@Operator",trueModel.Operator),
|
new SqlParameter("@Remark",trueModel.Remark) ,
|
new SqlParameter("@ResidualAmount",trueModel.ResidualAmount) ,
|
new SqlParameter("@Department",trueModel.Department??"")
|
};
|
try
|
{
|
_dataBase.Query("sp_OA_FirmAccountRecord_Insert", CommandType.StoredProcedure, sqlParms.ToArray<SqlParameter>());
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 修改
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public bool UpdateModel(Infrastructure.Domain.IAggregateRoot model)
|
{
|
Model.OA_FirmAccountRecord trueModel = model as Model.OA_FirmAccountRecord;
|
if (trueModel == null)
|
{
|
return false;
|
}
|
IList<SqlParameter> sqlParms = new List<SqlParameter>()
|
{new SqlParameter("@Keyid",trueModel.Keyid),
|
new SqlParameter("@SubjectId",trueModel.SubjectId),
|
new SqlParameter("@AccountId",trueModel.AccountId),
|
new SqlParameter("@RecordTypeId",trueModel.RecordTypeId),
|
new SqlParameter("@Money",trueModel.Money),
|
new SqlParameter("@PaymentUnit",trueModel.PaymentUnit),
|
new SqlParameter("@OperationalMatters",trueModel.OperationalMatters),
|
new SqlParameter("@LastUpdateTime",trueModel.LastUpdateTime),
|
new SqlParameter("@Operator",trueModel.Operator),
|
new SqlParameter("@Remark",trueModel.Remark) ,
|
new SqlParameter("@ResidualAmount",trueModel.ResidualAmount)
|
};
|
try
|
{
|
_dataBase.Query("sp_OA_FirmAccountRecord_Update", CommandType.StoredProcedure, sqlParms.ToArray<SqlParameter>());
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 删除
|
/// </summary>
|
/// <param name="id"></param>
|
/// <returns></returns>
|
public bool DeleteModel(Infrastructure.Domain.IAggregateRoot model)
|
{
|
Model.OA_FirmAccountRecord trueModel = model as Model.OA_FirmAccountRecord;
|
if (trueModel == null)
|
{
|
return false;
|
}
|
IList<SqlParameter> sqlParms = new List<SqlParameter>()
|
{
|
new SqlParameter("@Keyid",trueModel.Keyid)
|
};
|
try
|
{
|
_dataBase.Query("sp_OA_FirmAccountRecord_DeleteRow", CommandType.StoredProcedure, sqlParms.ToArray<SqlParameter>());
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
return true;
|
}
|
|
/// <summary>
|
/// 分页查询
|
/// </summary>
|
/// <param name="query"></param>
|
/// <param name="pagination"></param>
|
/// <returns></returns>
|
public IEnumerable<Model.OA_FirmAccountRecord> SelectAllModel(Infrastructure.Query.Query query, Infrastructure.Query.Pagination pagination)
|
{
|
throw new NotImplementedException();
|
}
|
|
/// <summary>
|
/// 分页查询
|
/// </summary>
|
/// <param name="pa"></param>
|
/// <param name="FirmId"></param>
|
/// <param name="RegTimeStart"></param>
|
/// <param name="RegTimeEnd"></param>
|
/// <param name="AccountName"></param>
|
/// <param name="AcoountType"></param>
|
/// <param name="Operator"></param>
|
/// <param name="SubjectId"></param>
|
/// <param name="RecordTypeId"></param>
|
/// <param name="PaymentUnit"></param>
|
/// <param name="OperationalMatters"></param>
|
/// <returns></returns>
|
public IEnumerable<Model.OA_FirmAccountRecord> SelectModelPage(Pagination pa, Guid FirmId, DateTime? RegTimeStart, DateTime? RegTimeEnd, string AccountName, string AcoountType, string Operator, string SubjectId, string RecordTypeId, string PaymentUnit, string OperationalMatters)
|
{
|
try
|
{
|
string target = " a.*,b.AccountType AS FirmAccountType,b.UserName AS UserName,b.AccountName AS FirmAccountName,c.SubjectName AS SusjectName";
|
string fromSource = " dbo.OA_FirmAccountRecord a LEFT JOIN dbo.OA_FirmAccount b ON b.Keyid = a.AccountId LEFT JOIN dbo.OA_SubjectSet c ON a.SubjectId = c.Keyid WHERE b.FirmId='" + FirmId + "' ";
|
if (!string.IsNullOrEmpty(RecordTypeId))
|
{
|
fromSource += string.Format(" and RecordTypeId ='{0}'", RecordTypeId);
|
}
|
if (RegTimeStart.HasValue)
|
{
|
fromSource += string.Format(" and CAST(a.LastUpdateTime AS DATE) >='{0}'", RegTimeStart);
|
}
|
if (RegTimeEnd.HasValue)
|
{
|
fromSource += string.Format(" and CAST(a.LastUpdateTime AS DATE) <='{0}'", RegTimeEnd);
|
}
|
if (!string.IsNullOrEmpty(AccountName))
|
{
|
fromSource += string.Format(" and a.AccountId ='{0}'", AccountName);
|
}
|
if (!string.IsNullOrEmpty(AcoountType))
|
{
|
fromSource += string.Format(" and b.AccountType='{0}'", AcoountType);
|
}
|
if (!string.IsNullOrEmpty(Operator))
|
{
|
fromSource += string.Format(" and a.Operator like '%{0}%'", Operator);
|
}
|
if (!string.IsNullOrEmpty(OperationalMatters))
|
{
|
fromSource += string.Format(" and a.OperationalMatters like '%{0}%'", OperationalMatters);
|
}
|
if (!string.IsNullOrEmpty(SubjectId))
|
{
|
fromSource += string.Format(" and a.SubjectId='{0}'", SubjectId);
|
}
|
if (!string.IsNullOrEmpty(PaymentUnit))
|
{
|
fromSource += string.Format(" and a.PaymentUnit like '%{0}%'", PaymentUnit);
|
}
|
|
return _dataBase.SelectModelPage<Model.OA_FirmAccountRecord>(pa, target, fromSource, "a.LastUpdateTime DESC");
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
/// <summary>
|
/// 金额统计
|
/// </summary>
|
/// <param name="pa"></param>
|
/// <param name="FirmId"></param>
|
/// <param name="RegTimeStart"></param>
|
/// <param name="RegTimeEnd"></param>
|
/// <param name="AccountName"></param>
|
/// <param name="AcoountType"></param>
|
/// <param name="Operator"></param>
|
/// <param name="SubjectId"></param>
|
/// <param name="RecordTypeId"></param>
|
/// <param name="PaymentUnit"></param>
|
/// <returns></returns>
|
public Model.OA_FirmAccountRecord SumRecordMoney(Pagination pa, Guid FirmId, DateTime? RegTimeStart, DateTime? RegTimeEnd, string AccountName, string AcoountType, string Operator, string SubjectId, string RecordTypeId, string PaymentUnit)
|
{
|
try
|
{
|
string target = " case when RecordTypeId = 1 then sum(Money) else 0 end as AllIncomeMoney , case when RecordTypeId = 2 then sum(Money) else 0 end as AllExpensesMoney ";
|
string fromSource = " dbo.OA_FirmAccountRecord a LEFT JOIN dbo.OA_FirmAccount b ON b.Keyid = a.AccountId LEFT JOIN dbo.OA_SubjectSet c ON a.SubjectId = c.Keyid WHERE b.FirmId='" + FirmId + "' ";
|
if (!string.IsNullOrEmpty(RecordTypeId))
|
{
|
fromSource += string.Format(" and RecordTypeId ='{0}'", RecordTypeId);
|
}
|
if (RegTimeStart.HasValue)
|
{
|
fromSource += string.Format(" and CAST(a.LastUpdateTime AS DATE) >='{0}'", RegTimeStart);
|
}
|
if (RegTimeEnd.HasValue)
|
{
|
fromSource += string.Format(" and CAST(a.LastUpdateTime AS DATE) <='{0}'", RegTimeEnd);
|
}
|
if (!string.IsNullOrEmpty(AccountName))
|
{
|
fromSource += string.Format(" and a.AccountId ='{0}'", AccountName);
|
}
|
if (!string.IsNullOrEmpty(AcoountType))
|
{
|
fromSource += string.Format(" and b.AccountType='{0}'", AcoountType);
|
}
|
if (!string.IsNullOrEmpty(Operator))
|
{
|
fromSource += string.Format(" and a.Operator like '%{0}%'", Operator);
|
}
|
|
if (!string.IsNullOrEmpty(SubjectId))
|
{
|
fromSource += string.Format(" and a.SubjectId='{0}'", SubjectId);
|
}
|
if (!string.IsNullOrEmpty(PaymentUnit))
|
{
|
fromSource += string.Format(" and a.PaymentUnit like '%{0}%'", PaymentUnit);
|
}
|
|
IList<Model.OA_FirmAccountRecord> m_OA_FirmAccountRecordList = _dataBase.SelectModel<Model.OA_FirmAccountRecord>(target, fromSource + " group by RecordTypeId");
|
if (m_OA_FirmAccountRecordList != null && m_OA_FirmAccountRecordList.Count == 2)
|
{
|
m_OA_FirmAccountRecordList[0].AllIncomeMoney = m_OA_FirmAccountRecordList[0].AllIncomeMoney > 0 ? m_OA_FirmAccountRecordList[0].AllIncomeMoney : m_OA_FirmAccountRecordList[1].AllIncomeMoney;
|
m_OA_FirmAccountRecordList[0].AllExpensesMoney = m_OA_FirmAccountRecordList[0].AllExpensesMoney > 0 ? m_OA_FirmAccountRecordList[0].AllExpensesMoney : m_OA_FirmAccountRecordList[1].AllExpensesMoney;
|
return m_OA_FirmAccountRecordList[0];
|
}
|
else if (m_OA_FirmAccountRecordList != null && m_OA_FirmAccountRecordList.Count > 0)
|
{
|
return m_OA_FirmAccountRecordList[0];
|
}
|
else
|
{
|
return null;
|
}
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
/// <summary>
|
/// 单个查询
|
/// </summary>
|
/// <param name="query"></param>
|
/// <returns></returns>
|
public Model.OA_FirmAccountRecord SelectSingleModel(string Keyid, Guid FirmId)
|
{
|
try
|
{
|
string target = " a.*,b.AccountType AS FirmAccountType,b.AccountName AS FirmAccountName,c.SubjectName AS SusjectName";
|
string fromSource = " dbo.OA_FirmAccountRecord a LEFT JOIN dbo.OA_FirmAccount b ON b.Keyid = a.AccountId LEFT JOIN dbo.OA_SubjectSet c ON a.SubjectId = c.Keyid WHERE b.FirmId='" + FirmId + "' and a.Keyid='" + Keyid + "'";
|
return _dataBase.SelectModel<Model.OA_FirmAccountRecord>(target, fromSource)[0];
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
|
}
|
|
/// <summary>
|
/// 分页查询
|
/// </summary>
|
/// <param name="query"></param>
|
/// <param name="pagination"></param>
|
/// <returns></returns>
|
public IEnumerable<Model.OA_FirmAccountRecord> SelectModelPage(Infrastructure.Query.Query query, Infrastructure.Query.Pagination pagination)
|
{
|
throw new NotImplementedException();
|
}
|
|
/// <summary>
|
/// 单个查询
|
/// </summary>
|
/// <param name="query"></param>
|
/// <returns></returns>
|
public IEnumerable<Model.OA_FirmAccountRecord> SelectAllModel(Infrastructure.Query.Query query)
|
{
|
throw new NotImplementedException();
|
}
|
|
/// <summary>
|
/// 添加收入/支出记录
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public bool AddModel(OA_FirmAccountRecord model, OA_FirmAccount m_OA_FirmAccount)
|
{
|
try
|
{
|
OA_FirmAccountRecordDAL dal_OA_FirmAccountRecordDAL = new OA_FirmAccountRecordDAL(_dataBase);
|
OA_FirmAccountDAL dal_OA_FirmAccountDAL = new OA_FirmAccountDAL(_dataBase);
|
bool IsSuccess = true;
|
using (TransactionScope t_TransactionScope = new TransactionScope())
|
{
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountRecordDAL.InserModel(model);
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountDAL.UpdateModel(m_OA_FirmAccount);
|
if (IsSuccess)
|
{
|
t_TransactionScope.Complete();
|
}
|
}
|
}
|
}
|
return IsSuccess;
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
/// <summary>
|
/// 添加收入/支出记录,并更改会员状态
|
/// </summary>
|
/// <param name="model"></param>
|
/// <param name="m_OA_FirmAccount"></param>
|
/// <param name="memberBasic"></param>
|
/// <returns></returns>
|
public bool AddModel(OA_FirmAccountRecord model, OA_FirmAccount m_OA_FirmAccount, EC_MemberBasic memberBasic, EC_PaymentRecord paymentRecord)
|
{
|
try
|
{
|
OA_FirmAccountRecordDAL dal_OA_FirmAccountRecordDAL = new OA_FirmAccountRecordDAL(_dataBase);
|
OA_FirmAccountDAL dal_OA_FirmAccountDAL = new OA_FirmAccountDAL(_dataBase);
|
EC_MemberBasicDAL eC_MemberBasicDAL = new EC_MemberBasicDAL(_dataBase);
|
EC_PaymentRecordDAL eC_PaymentRecordDAL = new EC_PaymentRecordDAL(_dataBase);
|
bool IsSuccess = true;
|
using (TransactionScope t_TransactionScope = new TransactionScope())
|
{
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountRecordDAL.InserModel(model);
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountDAL.UpdateModel(m_OA_FirmAccount);
|
if (IsSuccess)
|
{
|
if (paymentRecord.PayType == "个人网店押金" || paymentRecord.PayType == "印刷厂商注册费" || paymentRecord.PayType == "印刷厂商续费")
|
{
|
IsSuccess = eC_MemberBasicDAL.UpdateModel(memberBasic);
|
}
|
if (IsSuccess)
|
{
|
IsSuccess = eC_PaymentRecordDAL.UpdateModel(paymentRecord);
|
if (IsSuccess)
|
{
|
t_TransactionScope.Complete();
|
}
|
}
|
}
|
}
|
}
|
}
|
return IsSuccess;
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
/// <summary>
|
/// 账户转账
|
/// </summary>
|
/// <param name="m_OA_FirmAccountIn"></param>
|
/// <param name="m_OA_FirmAccountOut"></param>
|
/// <param name="m_OA_FirmAccountRecordIn"></param>
|
/// <param name="m_OA_FirmAccountRecordOut"></param>
|
/// <returns></returns>
|
public bool AccountOToO(OA_FirmAccount m_OA_FirmAccountIn, OA_FirmAccount m_OA_FirmAccountOut, OA_FirmAccountRecord m_OA_FirmAccountRecordIn, OA_FirmAccountRecord m_OA_FirmAccountRecordOut)
|
{
|
try
|
{
|
OA_FirmAccountRecordDAL dal_OA_FirmAccountRecordDAL = new OA_FirmAccountRecordDAL(_dataBase);
|
OA_FirmAccountDAL dal_OA_FirmAccountDAL = new OA_FirmAccountDAL(_dataBase);
|
bool IsSuccess = true;
|
using (TransactionScope t_TransactionScope = new TransactionScope())
|
{
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountDAL.UpdateModel(m_OA_FirmAccountIn);
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountDAL.UpdateModel(m_OA_FirmAccountOut);
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountRecordDAL.InserModel(m_OA_FirmAccountRecordIn);
|
if (IsSuccess)
|
{
|
IsSuccess = dal_OA_FirmAccountRecordDAL.InserModel(m_OA_FirmAccountRecordOut);
|
if (IsSuccess)
|
{
|
t_TransactionScope.Complete();
|
}
|
}
|
}
|
}
|
}
|
}
|
return IsSuccess;
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
/// <summary>
|
/// 订单收款
|
/// </summary>
|
/// <param name="accountId">账户编号</param>
|
/// <param name="money">操作金额</param>
|
/// <param name="subjectId">科目编号</param>
|
/// <param name="payTime">支付时间</param>
|
/// <param name="PaymentUnit">支付方</param>
|
/// <param name="Operator">操作人</param>
|
/// <returns></returns>
|
public bool OrderReceivables(int? accountId, decimal? money, int? subjectId, DateTime? payTime, string PaymentUnit, string Operator)
|
{
|
try
|
{
|
bool result = false;
|
IList<SqlParameter> sqlParms = new List<SqlParameter>()
|
{
|
new SqlParameter("@Keyid",accountId),
|
new SqlParameter("@PayMoney",money),
|
new SqlParameter("@Operator",Operator),
|
new SqlParameter(){ParameterName="@result",Direction=ParameterDirection.ReturnValue,SqlDbType=SqlDbType.Int}
|
};
|
_dataBase.Query("sp_OA_FirmAccount_Update_Money", CommandType.StoredProcedure, sqlParms.ToArray<SqlParameter>());
|
|
result = 1.Equals(sqlParms[3].Value);
|
if (result)
|
{
|
OA_FirmAccountDAL dal_OA_FirmAccountDAL = new OA_FirmAccountDAL(_dataBase);
|
OA_FirmAccount m_OA_FirmAccount = dal_OA_FirmAccountDAL.getSingleSubject(accountId);
|
|
OA_FirmAccountRecord m_OA_FirmAccountRecord = new OA_FirmAccountRecord();
|
m_OA_FirmAccountRecord.AccountId = accountId;
|
m_OA_FirmAccountRecord.LastUpdateTime = payTime;
|
m_OA_FirmAccountRecord.Money = money;
|
m_OA_FirmAccountRecord.OperationalMatters = "订单收款";
|
m_OA_FirmAccountRecord.Operator = Operator;
|
m_OA_FirmAccountRecord.PaymentUnit = PaymentUnit;
|
m_OA_FirmAccountRecord.RecordTypeId = 1;
|
m_OA_FirmAccountRecord.Remark = "";
|
m_OA_FirmAccountRecord.SubjectId = subjectId;
|
m_OA_FirmAccountRecord.ResidualAmount = m_OA_FirmAccount.Balance;
|
m_OA_FirmAccountRecord.Department = "";
|
|
result = InserModel(m_OA_FirmAccountRecord);
|
}
|
|
return result;
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
/// <summary>
|
/// 更具ID数据获取列表
|
/// </summary>
|
/// <param name="FirmId"></param>
|
/// <param name="keyids"></param>
|
/// <returns></returns>
|
public IEnumerable<Model.OA_FirmAccountRecord> SelectModelListByKeyids(Guid FirmId, string keyids)
|
{
|
try
|
{
|
string target = " a.*,b.AccountType AS FirmAccountType,b.UserName AS UserName,b.AccountName AS FirmAccountName,c.SubjectName AS SusjectName ";
|
string fromSource = " dbo.OA_FirmAccountRecord a LEFT JOIN dbo.OA_FirmAccount b ON b.Keyid = a.AccountId LEFT JOIN dbo.OA_SubjectSet c ON a.SubjectId = c.Keyid ";
|
|
return _dataBase.SelectModel<Model.OA_FirmAccountRecord>(target, fromSource, " b.FirmId='" + FirmId + "' and a.keyid in (" + keyids + ") order by a.LastUpdateTime ASC ");
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
}
|
}
|