|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using NLog;
|
|
|
|
|
using POSV.Card;
|
|
|
|
|
using POSV.Proxy.Base;
|
|
|
|
|
using POSV.Proxy.Common;
|
|
|
|
|
using POSV.Stock;
|
|
|
|
|
using POSV.Utils;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using static POSV.Proxy.Common.CefOperationDelegation;
|
|
|
|
|
|
|
|
|
|
namespace POSV.Proxy.Stock
|
|
|
|
|
{
|
|
|
|
|
public class CostControlList : FromBase
|
|
|
|
|
{
|
|
|
|
|
public CostControlList()
|
|
|
|
|
{
|
|
|
|
|
this.LOGGER = LogManager.GetLogger(GetType().FullName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//==========================全局变量===========================
|
|
|
|
|
private readonly Logger LOGGER = null;
|
|
|
|
|
private string m_displayType = "新增";
|
|
|
|
|
private StoreCostTicketDetailResponse storeCostTicketDetailResponse = new StoreCostTicketDetailResponse();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 状态
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int m_Status = -1;//状态
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 选中的单据ID
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string m_TicketId = null;//选中的单据ID
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 单号
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string m_No = null;//单号
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 查询开始时间
|
|
|
|
|
/// </summary>
|
|
|
|
|
public DateTime m_StartPicker = Convert.ToDateTime(DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd 00:00:00"));
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 查询结束时间
|
|
|
|
|
/// </summary>
|
|
|
|
|
public DateTime m_EndPicker = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 分页参数
|
|
|
|
|
/// </summary>
|
|
|
|
|
public PageObject m_pageObject = new PageObject();
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 最后汇总时间
|
|
|
|
|
/// </summary>
|
|
|
|
|
public const string FINALSUMMARYTIME = "FinalSummaryTime";
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 单据信息数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public List<StoreCostTicketSalesinfoProduct> m_ProductList = null;
|
|
|
|
|
|
|
|
|
|
public string m_SummData = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 状态string
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string StatusStr
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
switch (m_Status)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
return "待审核";
|
|
|
|
|
case 1:
|
|
|
|
|
return "已审核";
|
|
|
|
|
case 2:
|
|
|
|
|
return "已作废";
|
|
|
|
|
default:
|
|
|
|
|
return "全部";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 页面类型
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string DisplayType { get => m_displayType; set => m_displayType = value; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 当前单据数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public StoreCostTicketDetailResponse StoreCostTicketDetailResponse { get => storeCostTicketDetailResponse; set => storeCostTicketDetailResponse = value; }
|
|
|
|
|
|
|
|
|
|
public string GetStoreCostTicketDetailResponse()
|
|
|
|
|
{
|
|
|
|
|
return JsonConvert.SerializeObject(StoreCostTicketDetailResponse);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 辅助
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void AuxiliaryTABKey()
|
|
|
|
|
{
|
|
|
|
|
InputSimulatorUtils.SendKey(KeyCodes.Map["tab"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 跳转
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void LoadModule(string str)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(str))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.m_LoadPageEvent == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
switch (str)
|
|
|
|
|
{
|
|
|
|
|
case "新增经营会计报表":
|
|
|
|
|
this.m_LoadPageEvent("custom://form/AddCostControl.html");
|
|
|
|
|
break;
|
|
|
|
|
case "经营会计报表":
|
|
|
|
|
this.m_LoadPageEvent("custom://form/CostControlList.html");
|
|
|
|
|
break;
|
|
|
|
|
case "审核经营会计报表":
|
|
|
|
|
this.m_LoadPageEvent("custom://form/AddCostControl.html");
|
|
|
|
|
break;
|
|
|
|
|
case "修改经营会计报表":
|
|
|
|
|
this.m_LoadPageEvent("custom://form/AddCostControl.html");
|
|
|
|
|
break;
|
|
|
|
|
case "查看经营会计报表":
|
|
|
|
|
this.m_LoadPageEvent("custom://form/AddCostControl.html");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
this.m_LoadPageEvent("custom://form/CostControlList.html");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 前端传入 查询参数
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void SetQueryCondition(string _status, string _no, string _startPicker, string _endPicker)
|
|
|
|
|
{
|
|
|
|
|
int status = -1;
|
|
|
|
|
int.TryParse(_status, out status);
|
|
|
|
|
this.m_Status = status;
|
|
|
|
|
this.m_No = _no;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(_startPicker) && !string.IsNullOrEmpty(_endPicker))
|
|
|
|
|
{
|
|
|
|
|
this.m_StartPicker = DateTime.Parse(_startPicker);
|
|
|
|
|
this.m_EndPicker = DateTime.Parse(_endPicker);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取查询参数
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public string GetQueryCondition()
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<object> returnInfo = new ReturnInfo<object>();
|
|
|
|
|
var _data = new
|
|
|
|
|
{
|
|
|
|
|
No = m_No,
|
|
|
|
|
Status = m_Status,
|
|
|
|
|
StartPicker = m_StartPicker.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
|
|
EndPicker = m_EndPicker.ToString("yyyy-MM-dd HH:mm:ss")
|
|
|
|
|
};
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
returnInfo.Data = _data;
|
|
|
|
|
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 查询单据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string BtnQuery()
|
|
|
|
|
{
|
|
|
|
|
return JsonConvert.SerializeObject(this.CostControlListQuery());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取经营成本模板
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="summData">汇总日期</param>
|
|
|
|
|
public string GetTicketTemplate()
|
|
|
|
|
{
|
|
|
|
|
if (this.DisplayType == "审核" || this.DisplayType == "查看")
|
|
|
|
|
{
|
|
|
|
|
this.UpdataStoreCostTicketDetailResponse();
|
|
|
|
|
ReturnInfo<object> _Return = new ReturnInfo<object>();
|
|
|
|
|
_Return.Code = 0;
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductMoreChange.ForEach(f => { f.NotCalculate = true; });
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductChange.ForEach(f => { f.NotCalculate = true; });
|
|
|
|
|
_Return.Data = this.StoreCostTicketDetailResponse;
|
|
|
|
|
return JsonConvert.SerializeObject(_Return);
|
|
|
|
|
}
|
|
|
|
|
else if (this.DisplayType == "修改")
|
|
|
|
|
{
|
|
|
|
|
this.UpdataStoreCostTicketDetailResponse();
|
|
|
|
|
ReturnInfo<object> _Return = new ReturnInfo<object>();
|
|
|
|
|
_Return.Code = 0;
|
|
|
|
|
var _data = JsonConvert.DeserializeObject<StoreCostTicketDetailResponse>(JsonConvert.SerializeObject(this.StoreCostTicketDetailResponse));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.TicketTemplateQuery(DateTime.Parse(StoreCostTicketDetailResponse.SummaryDate));
|
|
|
|
|
this.StoreCostTicketDetailResponse.No = _data.No;
|
|
|
|
|
this.StoreCostTicketDetailResponse.CreateDate = _data.CreateDate;
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
if (f.CostType == 0)
|
|
|
|
|
{
|
|
|
|
|
var _todayStock = _data.ProductChange.FirstOrDefault(a => a.ProductId == f.ProductId)?.TodayStock;
|
|
|
|
|
f.TodayStock = _todayStock == null ? 0 : (decimal)_todayStock;
|
|
|
|
|
}
|
|
|
|
|
else if (f.CostType == 1)
|
|
|
|
|
{
|
|
|
|
|
var _todayIn = _data.ProductChange.FirstOrDefault(a => a.ProductId == f.ProductId)?.TodayIn;
|
|
|
|
|
f.TodayIn = _todayIn == null ? 0 : (decimal)_todayIn;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var _cost = _data.ProductChange.FirstOrDefault(a => a.ProductId == f.ProductId)?.Cost;
|
|
|
|
|
f.Cost = _cost == null ? 0 : (decimal)_cost;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductMoreChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
if (f.CostType == 0)
|
|
|
|
|
{
|
|
|
|
|
var _todayStock = _data.ProductMoreChange.FirstOrDefault(a => a.ProductId == f.ProductId)?.TodayStock;
|
|
|
|
|
f.TodayStock = _todayStock == null ? 0 : (decimal)_todayStock;
|
|
|
|
|
}
|
|
|
|
|
else if (f.CostType == 1)
|
|
|
|
|
{
|
|
|
|
|
var _todayIn = _data.ProductMoreChange.FirstOrDefault(a => a.ProductId == f.ProductId)?.TodayIn;
|
|
|
|
|
f.TodayIn = _todayIn == null ? 0 : (decimal)_todayIn;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var _cost = _data.ProductMoreChange.FirstOrDefault(a => a.ProductId == f.ProductId)?.Cost;
|
|
|
|
|
f.Cost = _cost == null ? 0 : (decimal)_cost;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductFixedChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
var _money = _data.ProductFixedChange.FirstOrDefault(a => a.ItemId == f.ItemId)?.Money;
|
|
|
|
|
f.Money = _money == null ? 0 : (decimal)_money;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductOtherChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
var _money = _data.ProductOtherChange.FirstOrDefault(a => a.ItemId == f.ItemId)?.Money;
|
|
|
|
|
f.Money = _money == null ? 0 : (decimal)_money;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
_Return.Data = this.StoreCostTicketDetailResponse;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return JsonConvert.SerializeObject(_Return);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return JsonConvert.SerializeObject(this.TicketTemplateQuery(GetChoosableDate()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 最后可汇总时间
|
|
|
|
|
/// </summary>
|
|
|
|
|
public DateTime GetChoosableDate()
|
|
|
|
|
{
|
|
|
|
|
DateTime _itme = DateTime.Now;
|
|
|
|
|
if (string.IsNullOrEmpty(this.m_SummData))
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(Global.Instance.GlobalConfigStringValue(FINALSUMMARYTIME)))
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
_itme = DateTime.Parse(Global.Instance.GlobalConfigStringValue(FINALSUMMARYTIME));
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_itme = DateTime.Parse(this.m_SummData);
|
|
|
|
|
this.m_SummData = string.Empty;
|
|
|
|
|
}
|
|
|
|
|
return _itme;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductChange计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string SetProductCalculate(string StrJson)
|
|
|
|
|
{
|
|
|
|
|
return JsonConvert.SerializeObject(this.ProductCalculate(StrJson));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductMore计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string SetProductMoreCalculate(string StrJson)
|
|
|
|
|
{
|
|
|
|
|
return JsonConvert.SerializeObject(this.ProductMoreCalculate(StrJson));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductOther计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string SetProductOtherCalculate(string StrJson)
|
|
|
|
|
{
|
|
|
|
|
return JsonConvert.SerializeObject(this.ProductOtherCalculate(StrJson));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductFixedChange计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string SetProductFixedChangeCalculate(string StrJson)
|
|
|
|
|
{
|
|
|
|
|
return JsonConvert.SerializeObject(this.ProductFixedChangeCalculate(StrJson));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string GetProductCalculateData(string id)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductChange>();
|
|
|
|
|
var _data = this.StoreCostTicketDetailResponse.ProductChange.FirstOrDefault(f => f.ProductId == id);
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的商品无法找到源数据";
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
returnInfo.Data = _data;
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string GetProductMoreCalculateData(string id)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductMoreChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductMoreChange>();
|
|
|
|
|
var _data = this.StoreCostTicketDetailResponse.ProductMoreChange.FirstOrDefault(f => f.ProductId == id);
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的商品无法找到源数据";
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
returnInfo.Data = _data;
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string GetProductOtherCalculateData(string id)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductOtherChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductOtherChange>();
|
|
|
|
|
var _data = this.StoreCostTicketDetailResponse.ProductOtherChange.FirstOrDefault(f => f.ItemId == id);
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的项无法找到源数据";
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
returnInfo.Data = _data;
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string GetProductFixedChangeCalculateData(string id)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductFixedChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductFixedChange>();
|
|
|
|
|
var _data = this.StoreCostTicketDetailResponse.ProductFixedChange.FirstOrDefault(f => f.ItemId == id);
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的项无法找到源数据";
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
returnInfo.Data = _data;
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
return JsonConvert.SerializeObject(returnInfo);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 退出
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void BtnExit()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 保存
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string Save()
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<string> m_request = new ReturnInfo<string>();
|
|
|
|
|
StoreCostTicketSaveRequest saveRequest = new StoreCostTicketSaveRequest();
|
|
|
|
|
saveRequest.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
saveRequest.Operator = Global.Instance.BusinessPlanLog.WorkerNo;
|
|
|
|
|
saveRequest.storeCostTicketDetailResponse = this.StoreCostTicketDetailResponse;
|
|
|
|
|
|
|
|
|
|
var _data = StockUtils.StoreCostTicketSave(saveRequest);
|
|
|
|
|
|
|
|
|
|
if (_data.Item1)
|
|
|
|
|
{
|
|
|
|
|
m_request.Code = ReturnState.Succeed;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (_data.Item3 != null)
|
|
|
|
|
{
|
|
|
|
|
m_request.ErrorMessage = _data.Item3.Message;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_request.ErrorMessage = _data.Item2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return JsonConvert.SerializeObject(m_request);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 选中当前行
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="_TicketId"></param>
|
|
|
|
|
public void SetSelectedRow(string _TicketId)
|
|
|
|
|
{
|
|
|
|
|
this.m_TicketId = _TicketId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 审核单据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public string AuditStoreCostTicket()
|
|
|
|
|
{
|
|
|
|
|
StoreCostTicketUpdateStatusRequest storeCostTicketUpdate = new StoreCostTicketUpdateStatusRequest();
|
|
|
|
|
storeCostTicketUpdate.Operator = Global.Instance.BusinessPlanLog.WorkerNo;//制单人
|
|
|
|
|
storeCostTicketUpdate.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
storeCostTicketUpdate.TicketId = this.StoreCostTicketDetailResponse.Id;
|
|
|
|
|
storeCostTicketUpdate.Type = 1;
|
|
|
|
|
return JsonConvert.SerializeObject(this.StoreCostTicketUpdateStatusResponse(storeCostTicketUpdate));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Cancellation()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
StoreCostTicketUpdateStatusRequest storeCostTicketUpdate = new StoreCostTicketUpdateStatusRequest();
|
|
|
|
|
storeCostTicketUpdate.Operator = Global.Instance.BusinessPlanLog.WorkerNo;//制单人
|
|
|
|
|
storeCostTicketUpdate.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
storeCostTicketUpdate.TicketId = this.m_TicketId;
|
|
|
|
|
storeCostTicketUpdate.Type = 2;
|
|
|
|
|
return JsonConvert.SerializeObject(this.StoreCostTicketUpdateStatusResponse(storeCostTicketUpdate));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string StoreCostTicketUpdate()
|
|
|
|
|
{
|
|
|
|
|
StoreCostTicketUpdateRequest storeCostTicketUpdate = new StoreCostTicketUpdateRequest();
|
|
|
|
|
storeCostTicketUpdate.storeCostTicketDetailResponse = this.StoreCostTicketDetailResponse;
|
|
|
|
|
storeCostTicketUpdate.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
storeCostTicketUpdate.Operator = Global.Instance.BusinessPlanLog.WorkerNo;
|
|
|
|
|
return JsonConvert.SerializeObject(this.StoreCostTicketUpdate(storeCostTicketUpdate));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void UpdataStoreCostTicketDetailResponse()
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(this.m_TicketId))
|
|
|
|
|
{
|
|
|
|
|
StoreCostTicketDetail(this.m_TicketId);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetSummData(string _summData)
|
|
|
|
|
{
|
|
|
|
|
this.m_SummData = _summData;
|
|
|
|
|
|
|
|
|
|
this.m_ReloadFormEvent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetDescription(string str)
|
|
|
|
|
{
|
|
|
|
|
this.StoreCostTicketDetailResponse.Description = str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//==========================私有函数===========================
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 查询数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ReturnInfo<List<StoreCostTicketResponse>> CostControlListQuery()
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<List<StoreCostTicketResponse>> _Return = new ReturnInfo<List<StoreCostTicketResponse>>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var request = new StoreCostTicketRequest();
|
|
|
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(this.m_No))
|
|
|
|
|
{
|
|
|
|
|
request.No = this.m_No;
|
|
|
|
|
request.Status = -1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
request.Status = this.m_Status;
|
|
|
|
|
request.StartTime = this.m_StartPicker.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
request.EndTime = this.m_EndPicker.ToString("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
}
|
|
|
|
|
request.PageNumber = this.m_pageObject.PageNumber;
|
|
|
|
|
request.PageSize = this.m_pageObject.PageSize;
|
|
|
|
|
|
|
|
|
|
var response = StockUtils.StoreCostTicket(request);
|
|
|
|
|
|
|
|
|
|
//成功
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
List<StoreCostTicketResponse> storeCostTicketResponse = response.Item3.List;
|
|
|
|
|
|
|
|
|
|
foreach (StoreCostTicketResponse ticketResponse in storeCostTicketResponse)
|
|
|
|
|
{
|
|
|
|
|
switch (ticketResponse.Status)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
ticketResponse.StatusName = "待审核";
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
ticketResponse.StatusName = "已审核";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
ticketResponse.StatusName = "已作废";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
ticketResponse.StatusName = "其他";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.m_pageObject.PageCount = response.Item3.PageCount;
|
|
|
|
|
this.m_pageObject.PageNumber = response.Item3.PageNumber;
|
|
|
|
|
this.m_pageObject.TotalCount = response.Item3.TotalCount;
|
|
|
|
|
// this.m_pageObject.PageSize = response.Item3.PageSize;
|
|
|
|
|
_Return.Data = storeCostTicketResponse.OrderByDescending(f => f.CreateDate).ToList();
|
|
|
|
|
_Return.Code = ReturnState.Succeed;
|
|
|
|
|
return _Return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_Return.ErrorMessage = response.Item2;
|
|
|
|
|
return _Return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LOGGER.Error(ex, "经营会计报表查询异常");
|
|
|
|
|
_Return.ErrorMessage = ex.Message;
|
|
|
|
|
return _Return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取模板
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="summData">汇总日期</param>
|
|
|
|
|
private ReturnInfo<object> TicketTemplateQuery(DateTime summData)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<object> _Return = new ReturnInfo<object>();
|
|
|
|
|
|
|
|
|
|
List<StoreCostTicketTemplateProductChange> ProductChangeList = null;
|
|
|
|
|
List<StoreCostTicketTemplateProductMoreChange> MoreChangeList = null;
|
|
|
|
|
List<StoreCostTicketTemplateProductOtherChange> OtherChangeList = null;
|
|
|
|
|
List<StoreCostTicketTemplateProductFixedChange> FixedChangeList = null;
|
|
|
|
|
List<StoreCostTicketSalesinfoProductType> ProductTypeList = null;
|
|
|
|
|
List<StoreCostTicketSalesinfoPayType> PayTypeList = null;
|
|
|
|
|
string amount = string.Format("{0}", 0.00M);
|
|
|
|
|
string discountAmount = string.Format("{0}", 0.00M);
|
|
|
|
|
string receivableAmount = string.Format("{0}", 0.00M);
|
|
|
|
|
string ticketCount = string.Format("{0}", 0);
|
|
|
|
|
string peoplePrice = string.Format("{0}", 0.00M);
|
|
|
|
|
string boxAmount = string.Format("{0}", 0.00M);
|
|
|
|
|
string workerAmount = string.Format("{0}", 0.00M);
|
|
|
|
|
|
|
|
|
|
//第一步加载主单数据
|
|
|
|
|
var busNo = string.Format("K{0}{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), Global.Instance.BusinessPlanLog.PosNo);//单据编号
|
|
|
|
|
var storeName = Global.Instance.Worker.StoreInfo.Name;//门店名称
|
|
|
|
|
var setMan = Global.Instance.BusinessPlanLog.WorkerNo;//制单人
|
|
|
|
|
var setDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//制单时间
|
|
|
|
|
var dateInputPicker = summData;//汇总日期
|
|
|
|
|
var status = "新建";
|
|
|
|
|
var totalCost = string.Format("{0}", 0.00M);
|
|
|
|
|
var profit = string.Format("{0}", 0.00M);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 获取汇总数据
|
|
|
|
|
var request = new StoreCostTicketSalesinfoRequest();
|
|
|
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request.Date = summData.ToString("yyyy-MM-dd");
|
|
|
|
|
var response = StockUtils.StoreCostTicketSalesinfo(request);
|
|
|
|
|
|
|
|
|
|
if (response.Item1)
|
|
|
|
|
{
|
|
|
|
|
if (response.Item3.Data == null)
|
|
|
|
|
{
|
|
|
|
|
_Return.ErrorMessage = "汇总数据获取失败," + response.Item2;
|
|
|
|
|
|
|
|
|
|
ProductTypeList = new List<StoreCostTicketSalesinfoProductType>();
|
|
|
|
|
|
|
|
|
|
PayTypeList = new List<StoreCostTicketSalesinfoPayType>();
|
|
|
|
|
m_ProductList = new List<StoreCostTicketSalesinfoProduct>();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//营业额
|
|
|
|
|
amount = string.Format("{0}", response.Item3.Data.Amount);
|
|
|
|
|
//折扣金额
|
|
|
|
|
discountAmount = string.Format("{0}", response.Item3.Data.DiscountAmount);
|
|
|
|
|
//应收金额
|
|
|
|
|
receivableAmount = string.Format("{0}", response.Item3.Data.ReceivableAmount);
|
|
|
|
|
//单数
|
|
|
|
|
ticketCount = string.Format("{0}", response.Item3.Data.TicketCount);
|
|
|
|
|
//客单价
|
|
|
|
|
peoplePrice = string.Format("{0}", response.Item3.Data.PeoplePrice);
|
|
|
|
|
//餐盒费
|
|
|
|
|
boxAmount = string.Format("{0}", response.Item3.Data.BoxAmount);
|
|
|
|
|
//员工餐
|
|
|
|
|
workerAmount = string.Format("{0}", response.Item3.Data.WorkerAmount);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//第六步加载分类汇总
|
|
|
|
|
ProductTypeList = response.Item3.Data.ProductTypeList;
|
|
|
|
|
//第七步加载支付方式汇总
|
|
|
|
|
PayTypeList = response.Item3.Data.PayTypeList;
|
|
|
|
|
//第八步加载单品销售信息
|
|
|
|
|
m_ProductList = response.Item3.Data.ProductList;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_Return.ErrorMessage = "汇总数据获取失败," + response.Item2;
|
|
|
|
|
return _Return;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 获取成本模板
|
|
|
|
|
var request1 = new StoreCostTicketTemplateInfoRequest();
|
|
|
|
|
request1.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request1.DateTime = summData.ToString("yyyy-MM-dd");
|
|
|
|
|
var response1 = StockUtils.StoreCostTicketTemplateInfo(request1);
|
|
|
|
|
if (response1.Item1)
|
|
|
|
|
{
|
|
|
|
|
if (response1.Item3.Data == null)
|
|
|
|
|
{
|
|
|
|
|
_Return.ErrorMessage = "成本数据获取失败," + response.Item2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//第二步加载生产变动成本模板数据
|
|
|
|
|
ProductChangeList = response1.Item3.Data.ProductChangeList;
|
|
|
|
|
|
|
|
|
|
//第三步加载辅助生产变动成本模板数据
|
|
|
|
|
MoreChangeList = response1.Item3.Data.MoreChangeList;
|
|
|
|
|
|
|
|
|
|
//第四步加载其他变动费用成本模板数据
|
|
|
|
|
OtherChangeList = response1.Item3.Data.OtherChangeList;
|
|
|
|
|
|
|
|
|
|
//第五步加载固定费成本模板数据
|
|
|
|
|
FixedChangeList = response1.Item3.Data.FixedChangeList;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_Return.ErrorMessage = "成本数据获取失败," + response.Item2;
|
|
|
|
|
return _Return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.TenantId = Global.Instance.Worker.StoreInfo.TenantId;
|
|
|
|
|
this.StoreCostTicketDetailResponse.No = busNo;
|
|
|
|
|
this.StoreCostTicketDetailResponse.StoreNo = Global.Instance.Worker.StoreInfo.No;
|
|
|
|
|
this.StoreCostTicketDetailResponse.StoreName = storeName;
|
|
|
|
|
this.StoreCostTicketDetailResponse.Status = 0;
|
|
|
|
|
this.StoreCostTicketDetailResponse.Amount = decimal.Parse(amount);
|
|
|
|
|
this.StoreCostTicketDetailResponse.DiscountAmount = decimal.Parse(discountAmount);
|
|
|
|
|
this.StoreCostTicketDetailResponse.BoxAmount = decimal.Parse(boxAmount);
|
|
|
|
|
this.StoreCostTicketDetailResponse.WorkerAmount = decimal.Parse(workerAmount);
|
|
|
|
|
this.StoreCostTicketDetailResponse.SummaryDate = summData.ToString("yyyy-MM-dd");
|
|
|
|
|
this.StoreCostTicketDetailResponse.CreateUser = setMan;
|
|
|
|
|
this.StoreCostTicketDetailResponse.CreateDate = setDate;
|
|
|
|
|
this.StoreCostTicketDetailResponse.ReceivableAmount = decimal.Parse(receivableAmount);
|
|
|
|
|
this.StoreCostTicketDetailResponse.CheckPeople = "";
|
|
|
|
|
this.StoreCostTicketDetailResponse.TicketCount = int.Parse(ticketCount);
|
|
|
|
|
this.StoreCostTicketDetailResponse.PeoplePrice = decimal.Parse(peoplePrice);
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductType = JsonConvert.DeserializeObject<List<StoreCostTicketDetailProductType>>(JsonConvert.SerializeObject(response.Item3.Data?.ProductTypeList));
|
|
|
|
|
this.StoreCostTicketDetailResponse.PayType = JsonConvert.DeserializeObject<List<StoreCostTicketDetailPayType>>(JsonConvert.SerializeObject(response.Item3.Data?.PayTypeList));
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductChange = this.ToProductChange(response1.Item3.Data.ProductChangeList, summData.ToString("yyyy-MM-dd"));
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductMoreChange = this.ToProductMoreChange(response1.Item3.Data.MoreChangeList, summData.ToString("yyyy-MM-dd"));
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductOtherChange = JsonConvert.DeserializeObject<List<StoreCostTicketDetailProductOtherChange>>(JsonConvert.SerializeObject(response1.Item3.Data.OtherChangeList));
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductFixedChange = JsonConvert.DeserializeObject<List<StoreCostTicketDetailProductFixedChange>>(JsonConvert.SerializeObject(response1.Item3.Data.FixedChangeList));
|
|
|
|
|
|
|
|
|
|
if (this.DisplayType.Equals("新增"))
|
|
|
|
|
{
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductOtherChange.ForEach(f => { f.Money = 0.00M; });
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
if (f.CostType == 1)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
f.TodayIn = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (f.CostType == 2)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayIn = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
f.Cost = 0;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductMoreChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
if (f.CostType == 1)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayIn = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (f.CostType == 2)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayIn = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
f.Cost = 0;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else if (this.DisplayType.Equals("修改"))
|
|
|
|
|
{
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
if (f.CostType == 1)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (f.CostType == 2)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayIn = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductMoreChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
if (f.CostType == 1)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (f.CostType == 2)
|
|
|
|
|
{
|
|
|
|
|
f.PosUse = 0;
|
|
|
|
|
f.TodayIn = 0;
|
|
|
|
|
f.TodayStock = 0;
|
|
|
|
|
f.TodayUse = 0;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (this.StoreCostTicketDetailResponse.PayType == null)
|
|
|
|
|
{
|
|
|
|
|
this.StoreCostTicketDetailResponse.PayType = new List<StoreCostTicketDetailPayType>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.StoreCostTicketDetailResponse.ProductType == null)
|
|
|
|
|
{
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductType = new List<StoreCostTicketDetailProductType>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_Return.Data = this.StoreCostTicketDetailResponse;
|
|
|
|
|
_Return.Code = 0;
|
|
|
|
|
return _Return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductChange计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="StrJson">编辑JSON Data</param>
|
|
|
|
|
private ReturnInfo<StoreCostTicketDetailProductChange> ProductCalculate(string StrJson)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductChange>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var _data = JsonConvert.DeserializeObject<StoreCostTicketDetailProductChange>(StrJson);
|
|
|
|
|
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "传入的数据为空或者不能正确解析";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var _source = this.StoreCostTicketDetailResponse.ProductChange.FirstOrDefault(f => f.ProductId == _data.ProductId);
|
|
|
|
|
|
|
|
|
|
if (_source == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的商品无法找到源数据";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.StoreCostTicketDetailResponse.ProductChange.Remove(_source))
|
|
|
|
|
{
|
|
|
|
|
_source.TodayStock = _data.TodayStock;
|
|
|
|
|
_source.TodayIn = _data.TodayIn;
|
|
|
|
|
if (_source.CostType == 2)
|
|
|
|
|
{
|
|
|
|
|
_source.Cost = _data.Cost;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//加入计算
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductChange.Add(_source);
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
f.SalePro = decimal.Round((f.Cost / this.StoreCostTicketDetailResponse.TotalCost) * 100, 2);
|
|
|
|
|
f.DifStandard = decimal.Round((f.SalePro - f.Standard), 2);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
returnInfo.Data = _source;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = ex.Message;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductMore计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ReturnInfo<StoreCostTicketDetailProductMoreChange> ProductMoreCalculate(string StrJson)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductMoreChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductMoreChange>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var _data = JsonConvert.DeserializeObject<StoreCostTicketDetailProductMoreChange>(StrJson);
|
|
|
|
|
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "传入的数据为空或者不能正确解析";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var _source = this.storeCostTicketDetailResponse.ProductMoreChange.FirstOrDefault(f => f.ProductId == _data.ProductId);
|
|
|
|
|
|
|
|
|
|
if (_source == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的商品无法找到源数据";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.storeCostTicketDetailResponse.ProductMoreChange.Remove(_source))
|
|
|
|
|
{
|
|
|
|
|
_source.TodayStock = _data.TodayStock;
|
|
|
|
|
_source.TodayIn = _data.TodayIn;
|
|
|
|
|
if (_source.CostType == 2)
|
|
|
|
|
{
|
|
|
|
|
_source.Cost = _data.Cost;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//加入计算
|
|
|
|
|
this.storeCostTicketDetailResponse.ProductMoreChange.Add(_source);
|
|
|
|
|
|
|
|
|
|
this.StoreCostTicketDetailResponse.ProductMoreChange.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
f.SalePro = decimal.Round((f.Cost / this.StoreCostTicketDetailResponse.TotalCost) * 100.00M, 2);
|
|
|
|
|
f.DifStandard = decimal.Round((f.SalePro - f.Standard), 2);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
returnInfo.Data = _source;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = ex.Message;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductOther计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ReturnInfo<StoreCostTicketDetailProductOtherChange> ProductOtherCalculate(string StrJson)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductOtherChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductOtherChange>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var _data = JsonConvert.DeserializeObject<StoreCostTicketDetailProductOtherChange>(StrJson);
|
|
|
|
|
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "传入的数据为空或者不能正确解析";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var _source = this.storeCostTicketDetailResponse.ProductOtherChange.FirstOrDefault(f => f.ItemId == _data.ItemId);
|
|
|
|
|
|
|
|
|
|
if (_source == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的向无法找到源数据";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.storeCostTicketDetailResponse.ProductOtherChange.Remove(_source))
|
|
|
|
|
{
|
|
|
|
|
_source.Money = _data.Money;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//加入计算
|
|
|
|
|
this.storeCostTicketDetailResponse.ProductOtherChange.Add(_source);
|
|
|
|
|
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
returnInfo.Data = _source;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = ex.Message;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// ProductFixedChange计算后数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
private ReturnInfo<StoreCostTicketDetailProductFixedChange> ProductFixedChangeCalculate(string strJson)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailProductFixedChange> returnInfo = new ReturnInfo<StoreCostTicketDetailProductFixedChange>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var _data = JsonConvert.DeserializeObject<StoreCostTicketDetailProductFixedChange>(strJson);
|
|
|
|
|
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "传入的数据为空或者不能正确解析";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var _source = this.storeCostTicketDetailResponse.ProductFixedChange.FirstOrDefault(f => f.ItemId == _data.ItemId);
|
|
|
|
|
|
|
|
|
|
if (_source == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "编辑的向无法找到源数据";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (this.storeCostTicketDetailResponse.ProductFixedChange.Remove(_source))
|
|
|
|
|
{
|
|
|
|
|
_source.Money = _data.Money;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//加入计算
|
|
|
|
|
this.storeCostTicketDetailResponse.ProductFixedChange.Add(_source);
|
|
|
|
|
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
returnInfo.Data = _source;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = ex.Message;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private ReturnInfo<bool> StoreCostTicketUpdateStatusResponse(StoreCostTicketUpdateStatusRequest storeCostTicketUpdateStatusRequest)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<bool> returnInfo = new ReturnInfo<bool>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//非新单据不能审核
|
|
|
|
|
//if (this.storeCostTicketDetailResponse.Status != 0)
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
// returnInfo.ErrorMessage = this.storeCostTicketDetailResponse.Status == 1 ? "单据已审核不能重复操作" : "单据已作废";
|
|
|
|
|
// // return returnInfo;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
var _data = StockUtils.StoreCostTicketUpdateStatus(storeCostTicketUpdateStatusRequest);
|
|
|
|
|
|
|
|
|
|
if (_data.Item1)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
returnInfo.Data = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (_data.Item3 == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = _data.Item2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = _data.Item3.Message;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = ex.Message;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private ReturnInfo<bool> StoreCostTicketUpdate(StoreCostTicketUpdateRequest request)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<bool> returnInfo = new ReturnInfo<bool>();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//非新单据不能审核
|
|
|
|
|
if (this.StoreCostTicketDetailResponse.Status != 0)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = this.StoreCostTicketDetailResponse.Status == 1 ? "单据已审核不能操作" : "单据已作废";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var _data = StockUtils.StoreCostTicketUpdate(request);
|
|
|
|
|
|
|
|
|
|
if (_data.Item1)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
returnInfo.Data = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (_data.Item3 == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = _data.Item2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = _data.Item3.Message;
|
|
|
|
|
returnInfo.Data = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = ex.Message;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private ReturnInfo<StoreCostTicketDetailResponse> StoreCostTicketDetail(string _TicketId)
|
|
|
|
|
{
|
|
|
|
|
ReturnInfo<StoreCostTicketDetailResponse> returnInfo = new ReturnInfo<StoreCostTicketDetailResponse>();
|
|
|
|
|
StoreCostTicketDetailRequest request = new StoreCostTicketDetailRequest();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
request.StoreId = Global.Instance.Authc.StoreId;
|
|
|
|
|
request.TicketId = _TicketId;
|
|
|
|
|
var _data = StockUtils.StoreCostTicketDetail(request);
|
|
|
|
|
|
|
|
|
|
if (_data.Item1)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.Code = ReturnState.Succeed;
|
|
|
|
|
|
|
|
|
|
if (_data.Item3 == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = "请求明细失败";
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
returnInfo.Data = _data.Item3.Data;
|
|
|
|
|
this.StoreCostTicketDetailResponse = returnInfo.Data;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (_data.Item3 == null)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = _data.Item2;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = _data.Item3.Message;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
returnInfo.ErrorMessage = ex.Message;
|
|
|
|
|
return returnInfo;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<StoreCostTicketDetailProductChange> ToProductChange(List<StoreCostTicketTemplateProductChange> _storeCosts, string _summaryDate)
|
|
|
|
|
{
|
|
|
|
|
List<StoreCostTicketDetailProductChange> _productChanges = new List<StoreCostTicketDetailProductChange>();
|
|
|
|
|
List<Entity.ProductUnit> _productUnit = new List<Entity.ProductUnit>();
|
|
|
|
|
List<Entity.ProductBurden> _productBurden = new List<Entity.ProductBurden>();
|
|
|
|
|
List<Entity.Product> _product = new List<Entity.Product>();
|
|
|
|
|
if (_storeCosts == null || _storeCosts.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
return _productChanges;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sqlBuld = new StringBuilder();
|
|
|
|
|
sqlBuld.Append(" select * from pos_product_burden ");
|
|
|
|
|
|
|
|
|
|
_productBurden = db.Query<Entity.ProductBurden>(sqlBuld.ToString()).ToList();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sqlBuld = new StringBuilder();
|
|
|
|
|
sqlBuld.Append(" select * from pos_product_unit ");
|
|
|
|
|
_productUnit = db.Query<Entity.ProductUnit>(sqlBuld.ToString()).ToList();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sqlBuld = new StringBuilder();
|
|
|
|
|
sqlBuld.Append(" select * from pos_product");
|
|
|
|
|
_product = db.Query<Entity.Product>(sqlBuld.ToString()).ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_storeCosts.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
StoreCostTicketDetailProductChange productChange = new StoreCostTicketDetailProductChange();
|
|
|
|
|
productChange.Cost = f.Cost;
|
|
|
|
|
productChange.CostType = f.CostType;
|
|
|
|
|
productChange.DifStandard = 0.00M;
|
|
|
|
|
productChange.Id = f.Id;
|
|
|
|
|
productChange.PackUnitId = f.PackUnitId;
|
|
|
|
|
productChange.ProductId = f.ProductId;
|
|
|
|
|
productChange.ProductName = f.ProductName;
|
|
|
|
|
productChange.ProductNo = f.ProductNo;
|
|
|
|
|
productChange.SalePro = 0.00M;
|
|
|
|
|
productChange.SpecId = f.SpecId;
|
|
|
|
|
productChange.SpecName = f.SpecName;
|
|
|
|
|
productChange.Standard = f.Standard;
|
|
|
|
|
productChange.StoreId = Global.Instance.Worker.StoreId;
|
|
|
|
|
productChange.StoreName = Global.Instance.Worker.StoreInfo.Name;
|
|
|
|
|
productChange.StoreNo = Global.Instance.Worker.StoreInfo.No;
|
|
|
|
|
productChange.SummaryDate = _summaryDate;
|
|
|
|
|
productChange.TenantId = f.TenantId;
|
|
|
|
|
productChange.TicketId = f.TicketId;
|
|
|
|
|
productChange.TicketNo = f.TicketNo;
|
|
|
|
|
productChange.TodayIn = f.TodayStockIn;
|
|
|
|
|
productChange.TypeId = f.TypeId;
|
|
|
|
|
productChange.TypeName = f.TypeName;
|
|
|
|
|
productChange.TypeNo = f.TypeNo;
|
|
|
|
|
productChange.PackUnitName = _productUnit.FirstOrDefault(pr => pr.Id == productChange.PackUnitId)?.Name;
|
|
|
|
|
productChange.YeterdayStock = f.LastStock;
|
|
|
|
|
|
|
|
|
|
var _productBurdendata = _productBurden.Where(a => a.BurdenSpecId == productChange.SpecId && a.BurdenProductId == productChange.ProductId).ToList();
|
|
|
|
|
|
|
|
|
|
if (_productBurdendata == null || _productBurdendata.Count <= 0)
|
|
|
|
|
{
|
|
|
|
|
var _productitem = _product.FirstOrDefault(p => p.Type == 0 && p.StockFlag == 1);
|
|
|
|
|
if (_productitem != null)
|
|
|
|
|
{
|
|
|
|
|
var _produc = this.m_ProductList.FirstOrDefault(o => o.ProductId == f.ProductId && o.SpecId == f.SpecId);
|
|
|
|
|
if (_produc != null)
|
|
|
|
|
{
|
|
|
|
|
productChange.PosUse = _produc.Count;
|
|
|
|
|
productChange.TodayUse = _produc.Count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_productBurdendata.ForEach(fr =>
|
|
|
|
|
{
|
|
|
|
|
var _produc = this.m_ProductList.FirstOrDefault(o => o.ProductId == fr.ProductId && o.SpecId == fr.SpecId);
|
|
|
|
|
if (_produc != null)
|
|
|
|
|
{
|
|
|
|
|
productChange.PosUse += (decimal)_produc.Count * fr.SalesAmount;
|
|
|
|
|
productChange.TodayUse += (decimal)_produc.Count * fr.SalesAmount;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
_productChanges.Add(productChange);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return _productChanges;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private List<StoreCostTicketDetailProductMoreChange> ToProductMoreChange(List<StoreCostTicketTemplateProductMoreChange> _productMoreChanges, string _summaryDate)
|
|
|
|
|
{
|
|
|
|
|
List<StoreCostTicketDetailProductMoreChange> _ProductMoreChanges = new List<StoreCostTicketDetailProductMoreChange>();
|
|
|
|
|
List<Entity.ProductBurden> _productBurden = new List<Entity.ProductBurden>();
|
|
|
|
|
List<Entity.ProductUnit> _productUnit = new List<Entity.ProductUnit>();
|
|
|
|
|
List<Entity.Product> _product = new List<Entity.Product>();
|
|
|
|
|
if (_productMoreChanges == null || _productMoreChanges.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
return _ProductMoreChanges;
|
|
|
|
|
}
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sqlBuld = new StringBuilder();
|
|
|
|
|
sqlBuld.Append(" select * from pos_product_burden ");
|
|
|
|
|
|
|
|
|
|
_productBurden = db.Query<Entity.ProductBurden>(sqlBuld.ToString()).ToList();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sqlBuld = new StringBuilder();
|
|
|
|
|
sqlBuld.Append(" select * from pos_product_unit ");
|
|
|
|
|
_productUnit = db.Query<Entity.ProductUnit>(sqlBuld.ToString()).ToList();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
using (var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sqlBuld = new StringBuilder();
|
|
|
|
|
sqlBuld.Append(" select * from pos_product");
|
|
|
|
|
_product = db.Query<Entity.Product>(sqlBuld.ToString()).ToList();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_productMoreChanges.ForEach(f =>
|
|
|
|
|
{
|
|
|
|
|
StoreCostTicketDetailProductMoreChange ProductMoreChange = new StoreCostTicketDetailProductMoreChange();
|
|
|
|
|
ProductMoreChange.Cost = f.Cost;
|
|
|
|
|
ProductMoreChange.CostType = f.CostType;
|
|
|
|
|
ProductMoreChange.DifStandard = 0.00M;
|
|
|
|
|
ProductMoreChange.Id = f.Id;
|
|
|
|
|
ProductMoreChange.PackUnitId = f.PackUnitId;
|
|
|
|
|
ProductMoreChange.ProductId = f.ProductId;
|
|
|
|
|
ProductMoreChange.ProductName = f.ProductName;
|
|
|
|
|
ProductMoreChange.ProductNo = f.ProductNo;
|
|
|
|
|
ProductMoreChange.SalePro = 0.00M;
|
|
|
|
|
ProductMoreChange.SpecId = f.SpecId;
|
|
|
|
|
ProductMoreChange.SpecName = f.SpecName;
|
|
|
|
|
ProductMoreChange.Standard = f.Standard;
|
|
|
|
|
ProductMoreChange.StoreId = Global.Instance.Worker.StoreId;
|
|
|
|
|
ProductMoreChange.StoreName = Global.Instance.Worker.StoreInfo.Name;
|
|
|
|
|
ProductMoreChange.StoreNo = Global.Instance.Worker.StoreInfo.No;
|
|
|
|
|
ProductMoreChange.SummaryDate = _summaryDate;
|
|
|
|
|
ProductMoreChange.TenantId = f.TenantId;
|
|
|
|
|
ProductMoreChange.TicketId = f.TicketId;
|
|
|
|
|
ProductMoreChange.TicketNo = f.TicketNo;
|
|
|
|
|
ProductMoreChange.TodayIn = f.TodayStockIn;
|
|
|
|
|
ProductMoreChange.TypeId = f.TypeId;
|
|
|
|
|
ProductMoreChange.TypeName = f.TypeName;
|
|
|
|
|
ProductMoreChange.TypeNo = f.TypeNo;
|
|
|
|
|
ProductMoreChange.PackUnitName = _productUnit.FirstOrDefault(pr => pr.Id == ProductMoreChange.PackUnitId)?.Name;
|
|
|
|
|
ProductMoreChange.YeterdayStock = f.LastStock;
|
|
|
|
|
|
|
|
|
|
var _productBurdendata = _productBurden.Where(a => a.BurdenSpecId == ProductMoreChange.SpecId && a.BurdenProductId == ProductMoreChange.ProductId).ToList();
|
|
|
|
|
|
|
|
|
|
if (_productBurdendata == null || _productBurdendata.Count <= 0)
|
|
|
|
|
{
|
|
|
|
|
var _productitem = _product.FirstOrDefault(p => p.Type == 0 && p.StockFlag == 1);
|
|
|
|
|
if (_productitem != null)
|
|
|
|
|
{
|
|
|
|
|
var _produc = this.m_ProductList.FirstOrDefault(o => o.ProductId == f.ProductId && o.SpecId == f.SpecId);
|
|
|
|
|
if (_produc != null)
|
|
|
|
|
{
|
|
|
|
|
ProductMoreChange.PosUse = _produc.Count;
|
|
|
|
|
ProductMoreChange.TodayUse = _produc.Count;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_productBurdendata.ForEach(fr =>
|
|
|
|
|
{
|
|
|
|
|
var _produc = this.m_ProductList.FirstOrDefault(o => o.ProductId == fr.ProductId && o.SpecId == fr.SpecId);
|
|
|
|
|
if (_produc != null)
|
|
|
|
|
{
|
|
|
|
|
ProductMoreChange.PosUse += (decimal)_produc.Count * fr.SalesAmount;
|
|
|
|
|
ProductMoreChange.TodayUse += (decimal)_produc.Count * fr.SalesAmount;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
_ProductMoreChanges.Add(ProductMoreChange);
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return _ProductMoreChanges;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|