2025-03-28 09:49:56 +08:00

347 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Data;
using SuperMap.RealEstate.ServiceModel;
using Business = SuperMap.RealEstate.Finance.Storage.Business;
using HCC = HZQR.Common.Common;
using HZQR.Common;
namespace EShang.Common.GeneralMethod
{
/// <summary>
/// 票据信息表相关方法
/// 2024/12/12 14:35:15自动生成
/// </summary>
public class BILLHelper
{
#region
/// <summary>
/// 获取票据信息表列表
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="TotalCount">查询结果总数</param>
/// <param name="searchModel">查询条件对象</param>
public static List<Model.BILLModel> GetBILLList(Transaction transaction,
ref int TotalCount, Model.SearchModel<Model.BILLModel> searchModel)
{
List<Model.BILLModel> BILLList = new List<Model.BILLModel>();
string WhereSQL = "", RowFilterSQL = "";
if (searchModel.SearchParameter != null)
{
WhereSQL = OperationDataHelper<Model.BILLModel>.GetWhereSQL(searchModel.SearchParameter, searchModel.QueryType, "",
"SERVERPART_IDS", "SERVERPARTSHOP_IDS", "MERCHANTS_IDS", "BILL_DATE_Start", "BILL_DATE_End", "ACCOUNTED_TYPES", "ACCOUNTED_DATE_Start", "ACCOUNTED_DATE_End");
if (WhereSQL != "")
{
WhereSQL = " WHERE " + WhereSQL;
}
//查询服务区内码
if (searchModel.SearchParameter.SERVERPART_IDS.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "SERVERPART_ID IN (" + searchModel.SearchParameter.SERVERPART_IDS + ")";
}
//查询门店内码
if (searchModel.SearchParameter.SERVERPARTSHOP_IDS.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "SERVERPARTSHOP_ID IN ('" +
searchModel.SearchParameter.SERVERPARTSHOP_IDS.Replace(",", "','") + "')";
}
//查询商户内码
if (searchModel.SearchParameter.MERCHANTS_IDS.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "MERCHANTS_ID IN (" + searchModel.SearchParameter.MERCHANTS_IDS + ")";
}
//查询开票日期
if (searchModel.SearchParameter.BILL_DATE_Start.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "SUBSTR(BILL_DATE,1,8) >= " +
DateTime.Parse(searchModel.SearchParameter.BILL_DATE_Start).ToString("yyyyMMdd");
}
if (searchModel.SearchParameter.BILL_DATE_End.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "SUBSTR(BILL_DATE,1,8) <= " +
DateTime.Parse(searchModel.SearchParameter.BILL_DATE_End).ToString("yyyyMMdd");
}
//查询入账类型枚举字段SHOPEXPENSE_TYPE
if (searchModel.SearchParameter.ACCOUNTED_TYPES.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "ACCOUNTED_TYPE IN (" + searchModel.SearchParameter.ACCOUNTED_TYPES + ")";
}
//查询入账时间
if (searchModel.SearchParameter.ACCOUNTED_DATE_Start.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "SUBSTR(ACCOUNTED_DATE,1,8) >= " +
DateTime.Parse(searchModel.SearchParameter.ACCOUNTED_DATE_Start).ToString("yyyyMMdd");
}
if (searchModel.SearchParameter.ACCOUNTED_DATE_End.TryParseToString() != "")
{
WhereSQL += (WhereSQL == "" ? " WHERE " : " AND ") + "SUBSTR(ACCOUNTED_DATE,1,8) <= " +
DateTime.Parse(searchModel.SearchParameter.ACCOUNTED_DATE_End).ToString("yyyyMMdd");
}
}
DataTable dtBILL = new Business.FINANCEPROINST(transaction).ExecuteDataTable(
"SELECT * FROM FINANCE_STORAGE.T_BILL" + WhereSQL);
//增加组合查询条件
if (searchModel.keyWord != null && !string.IsNullOrWhiteSpace(searchModel.keyWord.Key))
{
foreach (string KeyName in searchModel.keyWord.Key.Split(','))
{
RowFilterSQL += (RowFilterSQL == "" ? "" : " or ") +
KeyName + " like '%" + searchModel.keyWord.Value + "%'";
}
}
if (RowFilterSQL != "")
{
dtBILL.DefaultView.RowFilter = RowFilterSQL;
}
//排序:
dtBILL.DefaultView.Sort = searchModel.SortStr;
dtBILL = dtBILL.DefaultView.ToTable();
//获取查询结果总记录条数
TotalCount = dtBILL.Rows.Count;
//根据传入的页码和每页显示条数返回结果
dtBILL = CommonHelper.GetDataTableWithPageSize(dtBILL, searchModel.PageSize, searchModel.PageIndex);
foreach (DataRow drBILL in dtBILL.Rows)
{
Model.BILLModel billModel = new Model.BILLModel();
//绑定票据信息表数据对象
BindDataRowToModel(drBILL, billModel);
BILLList.Add(billModel);
}
return BILLList;
}
#region model
/// <summary>
/// 绑定model
/// </summary>
/// <param name="drBILL">datarow数据源</param>
/// <param name="billModel">model对象</param>
public static void BindDataRowToModel(DataRow drBILL, Model.BILLModel billModel)
{
if (drBILL["BILL_ID"].ToString() != "")
{
billModel.BILL_ID = drBILL["BILL_ID"].TryParseToInt(); //内码
}
if (drBILL["BILL_TYPE"].ToString() != "")
{
billModel.BILL_TYPE = drBILL["BILL_TYPE"].TryParseToInt(); //票据类型1000增值税专用发票2000普通发票
}
billModel.BILL_NO = drBILL["BILL_NO"].ToString(); //票据编号
billModel.SERIAL_NO = drBILL["SERIAL_NO"].ToString(); //流水号(实际发票号码)
if (drBILL["BILL_TAXAMOUNT"].ToString() != "")
{
billModel.BILL_TAXAMOUNT = drBILL["BILL_TAXAMOUNT"].TryParseToDouble(); //含税开票金额
}
if (drBILL["BILL_AMOUNT"].ToString() != "")
{
billModel.BILL_AMOUNT = drBILL["BILL_AMOUNT"].TryParseToDouble(); //除税开票金额
}
if (drBILL["DUTY_PARAGRAPH"].ToString() != "")
{
billModel.DUTY_PARAGRAPH = drBILL["DUTY_PARAGRAPH"].TryParseToInt(); //开票税率
}
if (drBILL["INVOICE_TAXAMOUNT"].ToString() != "")
{
billModel.INVOICE_TAXAMOUNT = drBILL["INVOICE_TAXAMOUNT"].TryParseToDouble(); //含税费用金额
}
if (drBILL["INVOICE_AMOUNT"].ToString() != "")
{
billModel.INVOICE_AMOUNT = drBILL["INVOICE_AMOUNT"].TryParseToDouble(); //除税费用金额
}
if (drBILL["TAXTAIL_DIFFERENCE"].ToString() != "")
{
billModel.TAXTAIL_DIFFERENCE = drBILL["TAXTAIL_DIFFERENCE"].TryParseToDouble(); //含税尾差
}
if (drBILL["TAIL_DIFFERENCE"].ToString() != "")
{
billModel.TAIL_DIFFERENCE = drBILL["TAIL_DIFFERENCE"].TryParseToDouble(); //除税尾差
}
if (drBILL["TAX_PRICE"].ToString() != "")
{
billModel.TAX_PRICE = drBILL["TAX_PRICE"].TryParseToDouble(); //开票税金
}
if (drBILL["SERVERPART_ID"].ToString() != "")
{
billModel.SERVERPART_ID = drBILL["SERVERPART_ID"].TryParseToInt(); //服务区内码
}
billModel.SERVERPART_NAME = drBILL["SERVERPART_NAME"].ToString(); //服务区名称
billModel.SERVERPARTSHOP_ID = drBILL["SERVERPARTSHOP_ID"].ToString(); //门店内码
billModel.SERVERPARTSHOP_NAME = drBILL["SERVERPARTSHOP_NAME"].ToString(); //门店名称
if (drBILL["MERCHANTS_ID"].ToString() != "")
{
billModel.MERCHANTS_ID = drBILL["MERCHANTS_ID"].TryParseToInt(); //商户内码
}
billModel.MERCHANTS_NAME = drBILL["MERCHANTS_NAME"].ToString(); //商户名称
billModel.BILL_PERSON = drBILL["BILL_PERSON"].ToString(); //开票人
if (!string.IsNullOrWhiteSpace(drBILL["BILL_DATE"].ToString()))
{
//开票日期
billModel.BILL_DATE = HCC.Common.TranslateDateTime(drBILL["BILL_DATE"].ToString());
}
billModel.BANK_NAME = drBILL["BANK_NAME"].ToString(); //开户银行
billModel.BANK_ACCOUNT = drBILL["BANK_ACCOUNT"].ToString(); //银行账号
billModel.TAXPAYER_IDENTIFYCODE = drBILL["TAXPAYER_IDENTIFYCODE"].ToString(); //统一信用代码
billModel.INTERBANK_NO = drBILL["INTERBANK_NO"].ToString(); //联行号
if (drBILL["ACCOUNTED_TYPE"].ToString() != "")
{
billModel.ACCOUNTED_TYPE = drBILL["ACCOUNTED_TYPE"].TryParseToShort(); //入账类型枚举字段SHOPEXPENSE_TYPE
}
if (!string.IsNullOrWhiteSpace(drBILL["ACCOUNTED_DATE"].ToString()))
{
//入账时间
billModel.ACCOUNTED_DATE = HCC.Common.TranslateDateTime(drBILL["ACCOUNTED_DATE"].ToString());
}
billModel.DOWNLOAD_URL = drBILL["DOWNLOAD_URL"].ToString(); //下载地址
if (drBILL["BILL_STATE"].ToString() != "")
{
billModel.BILL_STATE = drBILL["BILL_STATE"].TryParseToShort(); //票据状态
}
if (drBILL["STAFF_ID"].ToString() != "")
{
billModel.STAFF_ID = drBILL["STAFF_ID"].TryParseToInt(); //操作员内码
}
billModel.STAFF_NAME = drBILL["STAFF_NAME"].ToString(); //操作人员
if (drBILL["OPERATE_DATE"].ToString() != "")
{
billModel.OPERATE_DATE = drBILL["OPERATE_DATE"].TryParseToDateTime(); //操作时间
}
billModel.BILL_DESC = drBILL["BILL_DESC"].ToString(); //备注
}
#endregion
#endregion
#region
/// <summary>
/// 获取票据信息表明细
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="BILLId">票据信息表内码</param>
public static Model.BILLModel GetBILLDetail(Transaction transaction, int BILLId)
{
Model.BILLModel billModel = new Model.BILLModel();
string WhereSQL = "WHERE BILL_ID = " + BILLId;
//查询明细数据
DataTable dtBILL = new Business.FINANCEPROINST(transaction).ExecuteDataTable(
"SELECT * FROM FINANCE_STORAGE.T_BILL " + WhereSQL);
if (dtBILL.Rows.Count > 0)
{
//绑定票据信息表数据对象
BindDataRowToModel(dtBILL.Rows[0], billModel);
}
return billModel;
}
#endregion
#region
/// <summary>
/// 赋值票据信息表数据对象
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="billModel">票据信息表数据对象</param>
public static bool SynchroBILL(Transaction transaction, Model.BILLModel billModel)
{
bool SynchroFlag = true;
string SQLString;
List<string> excludeField = new List<string>();
Dictionary<string, string> dateFieldList = new Dictionary<string, string>();
string tableName = "FINANCE_STORAGE.T_BILL", keyField = "BILL_ID", seqName = "SEQ_BILL";
Business.FINANCEPROINST _FINANCEPROINST = new Business.FINANCEPROINST(transaction);
#region SQL语句中需要排除在外的字段
excludeField.Add("SERVERPART_IDS");
excludeField.Add("SERVERPARTSHOP_IDS");
excludeField.Add("MERCHANTS_IDS");
excludeField.Add("BILL_DATE_Start");
excludeField.Add("BILL_DATE_End");
excludeField.Add("ACCOUNTED_TYPES");
excludeField.Add("ACCOUNTED_DATE_Start");
excludeField.Add("ACCOUNTED_DATE_End");
#endregion
#region SQL语句中日期相关字段的执行语句
//开票日期
if (!string.IsNullOrWhiteSpace(billModel.BILL_DATE))
{
dateFieldList.Add("BILL_DATE", DateTime.Parse(
billModel.BILL_DATE).ToString("yyyyMMddHHmmss"));
}
else
{
dateFieldList.Add("BILL_DATE", "NULL");
}
//入账时间
if (!string.IsNullOrWhiteSpace(billModel.ACCOUNTED_DATE))
{
dateFieldList.Add("ACCOUNTED_DATE", DateTime.Parse(
billModel.ACCOUNTED_DATE).ToString("yyyyMMddHHmmss"));
}
else
{
dateFieldList.Add("ACCOUNTED_DATE", "NULL");
}
#endregion
if (billModel.BILL_ID != null)
{
string WhereSQL = " WHERE BILL_ID = " + billModel.BILL_ID;
DataTable dtBILL = _FINANCEPROINST.ExecuteDataTable(
"SELECT * FROM FINANCE_STORAGE.T_BILL" + WhereSQL);
if (dtBILL.Rows.Count > 0)
{
SQLString = OperationDataHelper<Model.BILLModel>.GetTableExcuteSQL(
billModel, 1, tableName, keyField, seqName, dateFieldList, excludeField, WhereSQL);
}
else
{
return false;
}
}
else
{
DataTable dtBILL = _FINANCEPROINST.ExecuteDataTable(
"SELECT " + seqName + ".NEXTVAL FROM DUAL");
billModel.BILL_ID = dtBILL.Rows[0][0].TryParseToInt();
SQLString = OperationDataHelper<Model.BILLModel>.GetTableExcuteSQL(
billModel, 0, tableName, keyField, seqName, dateFieldList, excludeField);
}
_FINANCEPROINST.ExecuteNonQuery(SQLString, null);
return SynchroFlag;
}
#endregion
#region
/// <summary>
/// 删除票据信息表
/// </summary>
/// <param name="transaction">事务管理器</param>
/// <param name="BILLId">票据信息表内码</param>
public static bool DeleteBILL(Transaction transaction, int? BILLId)
{
bool DeleteFlag = false;
if (BILLId != null)
{
string SQLString = "UPDATE FINANCE_STORAGE.T_BILL SET BILL_STATE = 0 WHERE BILL_ID = " + BILLId;
int ExcuteCount = new Business.FINANCEPROINST(transaction).ExecuteNonQuery(SQLString, null);
if (ExcuteCount > 0)
{
DeleteFlag = true;
}
}
return DeleteFlag;
}
#endregion
}
}