You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
309 lines
12 KiB
309 lines
12 KiB
using NFine.Code;
|
|
using NFine.Data.Extensions;
|
|
using NFine.Domain.Entity.ProductManage;
|
|
using NFine.Domain.IRepository.ProductManage;
|
|
using NFine.Repository.ProductManage;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
|
|
namespace NFine.Application.ProductManage
|
|
{
|
|
public class PreSellApp
|
|
{
|
|
private IICSProductRepository servicePro = new MaintainRepository();
|
|
private IICSProductPreSellRepository service = new PreSellRepository();
|
|
private IICSProductPreSellDetailRepository serviceD = new PreSellDetailRepository();
|
|
|
|
public List<ICSProductPreSellEntity> GetList(string keyword = "")
|
|
{
|
|
string username = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string userID = NFine.Code.OperatorProvider.Provider.GetCurrent().UserId;
|
|
string location = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
var expression = ExtLinq.True<ICSProductPreSellEntity>();
|
|
if (!string.IsNullOrEmpty(keyword))
|
|
{
|
|
expression = expression.And(t => t.PreSellNo.Contains(keyword));
|
|
}
|
|
if (username != "超级管理员")
|
|
{
|
|
expression = expression.And(t => t.F_CreatorUserId == userID);
|
|
|
|
expression = expression.And(t => t.F_Location == location);
|
|
}
|
|
|
|
return service.IQueryable(expression).OrderBy(t => t.PreSellNo).ToList();
|
|
}
|
|
|
|
public List<ICSProductPreSellEntity> GetListZS(Pagination pagination, string keyword, string keyword2)
|
|
{
|
|
string username = NFine.Code.OperatorProvider.Provider.GetCurrent().UserName;
|
|
string userID = NFine.Code.OperatorProvider.Provider.GetCurrent().UserId;
|
|
string location = NFine.Code.OperatorProvider.Provider.GetCurrent().Location;
|
|
var expression = ExtLinq.True<ICSProductPreSellEntity>();
|
|
if (!string.IsNullOrEmpty(keyword))
|
|
{
|
|
expression = expression.And(t => t.PreSellNo.Contains(keyword));
|
|
}
|
|
if (!string.IsNullOrEmpty(keyword2))
|
|
{
|
|
expression = expression.And(t => t.CustomerName.Contains(keyword2));
|
|
}
|
|
if (username != "超级管理员")
|
|
{
|
|
expression = expression.And(t => t.F_CreatorUserId == userID);
|
|
|
|
expression = expression.And(t => t.F_Location == location);
|
|
}
|
|
return service.FindList(expression, pagination);
|
|
}
|
|
|
|
public ICSProductPreSellEntity GetForm(string keyValue)
|
|
{
|
|
return service.FindEntity(keyValue);
|
|
}
|
|
|
|
public void DeleteForm(string keyValue)
|
|
{
|
|
service.Delete(t => t.F_Id == keyValue);
|
|
}
|
|
|
|
public void SubmitForm(List<ICSProductEntity> productList, ICSProductPreSellEntity ppsEntity, List<ICSProductPreSellDetailEntity> ppsdList)
|
|
{
|
|
if (ppsdList.Count <= 0)
|
|
throw new Exception("Please select the product you want to buy");
|
|
|
|
if (productList.Count >= 2)
|
|
{
|
|
ICSProductEntity model = productList[0];
|
|
for (int i = 0; i < productList.Count; i++)
|
|
{
|
|
if (i != 0)
|
|
{
|
|
if (model.Other != productList[i].Other)
|
|
{
|
|
throw new Exception("Orders can only choose one type of diamond(Rough/Polished).");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
string sql = @"SELECT TOP 1 c.ProductSN,c.Other FROM ICSProductPreSellDetail a
|
|
LEFT JOIN ICSProductPreSell b ON a.PreSell_Id = b.F_Id
|
|
LEFT JOIN ICSProduct c ON c.F_Id = a.Product_Id
|
|
WHERE b.F_Id = '{0}'
|
|
ORDER BY a.PreSellTime";
|
|
sql = string.Format(sql, ppsdList[0].PreSell_Id);
|
|
DataTable d = SqlHelper.GetDataTableBySql(sql);
|
|
if (d != null && d.Rows.Count > 0)
|
|
{
|
|
string other = d.Rows[0]["Other"].ToString();
|
|
if (!string.IsNullOrEmpty(other))
|
|
{
|
|
foreach (ICSProductEntity item in productList)
|
|
{
|
|
if (other != item.Other)
|
|
{
|
|
throw new Exception("Orders can only choose one type of diamond(Rough/Polished).");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (ppsEntity != null)
|
|
{
|
|
if (ppsEntity.PreSellNo.Length <= 0)
|
|
{
|
|
throw new Exception("New order number can not be empty");
|
|
}
|
|
else
|
|
{
|
|
string strSql = @"SELECT PreSellNo FROM ICSProductPreSell WHERE PreSellNo = '{0}'";
|
|
strSql = string.Format(strSql, ppsEntity.PreSellNo);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(strSql);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
//if (!string.IsNullOrEmpty(dt.Rows[0]["PreSellNo"].ToString()))
|
|
//{
|
|
throw new Exception("Order number already exists");
|
|
//}
|
|
//else
|
|
//{
|
|
// service.Insert(ppsEntity);
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
service.Insert(ppsEntity);
|
|
}
|
|
}
|
|
}
|
|
foreach (ICSProductPreSellDetailEntity model in ppsdList)
|
|
{
|
|
string strSql = @"SELECT * FROM ICSProductPreSellDetail
|
|
WHERE PreSell_Id = '{0}' AND Product_Id = '{1}'";
|
|
strSql = string.Format(strSql, model.PreSell_Id, model.Product_Id);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(strSql);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
throw new Exception("Data already exists");
|
|
}
|
|
else
|
|
{
|
|
model.Create();
|
|
serviceD.Insert(model);
|
|
}
|
|
}
|
|
foreach (ICSProductEntity model in productList)
|
|
{
|
|
model.Modify(model.F_Id);
|
|
servicePro.Update(model);
|
|
}
|
|
}
|
|
|
|
public void UpdateForm(ICSProductPreSellEntity ppsEntity)
|
|
{
|
|
service.Update(ppsEntity);
|
|
}
|
|
|
|
public void UpdateForm(List<ICSProductPreSellEntity> ppsList, List<ICSProductEntity> productList, string preSellId)
|
|
{
|
|
//if (ppsList.Count <= 0)
|
|
//{
|
|
// throw new Exception("No order, please choose the order first.");
|
|
//}
|
|
//if (productList.Count <= 0)
|
|
//{
|
|
// throw new Exception("There is no product information in the order and it cannot be confirmed.");
|
|
//}
|
|
//foreach (ICSProductPreSellEntity entity in ppsList)
|
|
//{
|
|
// service.Update(entity);
|
|
//}
|
|
//foreach (ICSProductEntity model in productList)
|
|
//{
|
|
// model.Modify(model.F_Id);
|
|
// servicePro.Update(model);
|
|
//}
|
|
//string sql = @"DELETE FROM ICSProductPreSellDetail WHERE F_Id IN
|
|
// (
|
|
// SELECT b.F_Id FROM ICSProductPreSell a
|
|
// LEFT JOIN ICSProductPreSellDetail b ON a.F_Id = b.PreSell_Id
|
|
// WHERE b.PreSell_Id <> '{0}' AND b.Product_SN IN
|
|
// (
|
|
// SELECT b.Product_SN FROM ICSProductPreSell a
|
|
// LEFT JOIN ICSProductPreSellDetail b ON a.F_Id = b.PreSell_Id
|
|
// WHERE b.PreSell_Id = '{0}'
|
|
// )
|
|
// )";
|
|
//sql = string.Format(sql, preSellId);
|
|
//DbHelper.ExecuteSqlCommand(sql);
|
|
}
|
|
|
|
public void UpdateFormC(List<ICSProductPreSellEntity> ppsList, List<ICSProductEntity> productList)
|
|
{
|
|
if (ppsList.Count <= 0)
|
|
{
|
|
throw new Exception("No order, please choose the order first.");
|
|
}
|
|
if (productList.Count <= 0)
|
|
{
|
|
throw new Exception("There is no product information in the order and it cannot be confirmed.");
|
|
}
|
|
foreach (ICSProductPreSellEntity entity in ppsList)
|
|
{
|
|
service.Update(entity);
|
|
}
|
|
foreach (ICSProductEntity model in productList)
|
|
{
|
|
model.Modify(model.F_Id);
|
|
servicePro.Update(model);
|
|
}
|
|
}
|
|
|
|
public string GetExpiredDays(string typeName)
|
|
{
|
|
string ExpiredDays = "0";
|
|
string sql = @"SELECT a.F_ItemCode FROM Sys_ItemsDetail a
|
|
LEFT JOIN Sys_Items b ON a.F_ItemId = b.F_Id
|
|
WHERE b.F_EnCode = '{0}'";
|
|
sql = string.Format(sql, typeName);
|
|
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
ExpiredDays = dt.Rows[0]["F_ItemCode"].ToString();
|
|
return ExpiredDays;
|
|
}
|
|
|
|
public string GetPreSellNo(string presellDetialID)
|
|
{
|
|
string PreSellNo = string.Empty;
|
|
string sql = @"SELECT a.PreSellNo
|
|
FROM ICSProductPreSell a
|
|
LEFT JOIN ICSProductPreSellDetail b ON a.F_Id = b.PreSell_Id
|
|
WHERE b.F_Id='{0}'";
|
|
sql = string.Format(sql, presellDetialID);
|
|
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
PreSellNo = dt.Rows[0]["PreSellNo"].ToString();
|
|
return PreSellNo;
|
|
//return service.IQueryable(expression).OrderBy(t => t.PreSellTime).ToList();
|
|
}
|
|
|
|
public List<string> GetProductID(string preSellId)
|
|
{
|
|
List<string> PIDs = null;
|
|
string sql = @"SELECT c.F_Id FROM ICSProductPreSell a
|
|
LEFT JOIN ICSProductPreSellDetail b ON a.F_Id = b.PreSell_Id
|
|
LEFT JOIN ICSProduct c ON b.Product_SN = c.ProductSN
|
|
WHERE a.F_Id = '{0}'";
|
|
sql = string.Format(sql, preSellId);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
{
|
|
PIDs = new List<string>();
|
|
foreach (DataRow row in dt.Rows)
|
|
{
|
|
string pid = row["F_Id"].ToString();
|
|
PIDs.Add(pid);
|
|
}
|
|
}
|
|
return PIDs;
|
|
}
|
|
|
|
public string GetOrderNo(string orderNoHead)
|
|
{
|
|
string sql = @"SELECT * FROM ICSProductPreSell WHERE PreSellNo LIKE '{0}%'";
|
|
sql = string.Format(sql, orderNoHead);
|
|
DataTable dt = SqlHelper.GetDataTableBySql(sql);
|
|
if (dt != null && dt.Rows.Count > 0)
|
|
return dt.Rows[0]["PreSellNo"].ToString();
|
|
else
|
|
return "";
|
|
}
|
|
|
|
public DataTable GetSOMain(string keyword)
|
|
{
|
|
if (NFine.Code.OperatorProvider.Provider.GetCurrent().UserName == "超级管理员"
|
|
|| (NFine.Code.OperatorProvider.Provider.GetCurrent().UserName != "超级管理员" &&
|
|
NFine.Code.OperatorProvider.Provider.GetCurrent().Location.ToUpper() == "SH")
|
|
)
|
|
{
|
|
DataTable dt = new DataTable();
|
|
string sql = @"SELECT cSOCode,dDate,cBusType,cSTName,cCusName,cDepName,iTaxRate,cexch_name,iExchRate,cMemo
|
|
FROM WMS_ZHENGSHI.dbo.SO_SOMain WHERE 1=1";
|
|
if (!string.IsNullOrEmpty(keyword))
|
|
{
|
|
sql = sql + " AND cSOCode = '{0}'";
|
|
sql = string.Format(sql, keyword);
|
|
}
|
|
dt = SqlHelper.GetDataTableBySql(sql);
|
|
return dt;
|
|
}
|
|
else
|
|
return null;
|
|
}
|
|
}
|
|
}
|