145 lines
5.0 KiB
C#
145 lines
5.0 KiB
C#
|
|
using GZ_LTHPilot_ORDER.Models.K3Request;
|
|||
|
|
using GZ_LTHPilot_ORDER.Models.K3Result;
|
|||
|
|
using GZ_LTHPilot_ORDER.Models.VO;
|
|||
|
|
using Kingdee.BOS;
|
|||
|
|
using Kingdee.BOS.Orm.DataEntity;
|
|||
|
|
using Kingdee.BOS.ServiceHelper;
|
|||
|
|
using Kingdee.BOS.WebApi.FormService;
|
|||
|
|
using Kingdee.K3.FIN.App.Core.Match.Object;
|
|||
|
|
using Newtonsoft.Json;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace GZ_LTHPilot_ORDER.Service
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 销售订单服务类
|
|||
|
|
/// </summary>
|
|||
|
|
public class SaleOrderService
|
|||
|
|
{
|
|||
|
|
private Context ctx;
|
|||
|
|
|
|||
|
|
public SaleOrderService(Context ctx)
|
|||
|
|
{
|
|||
|
|
this.ctx = ctx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 根据纸质合同号、组织获取销售订单
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public DynamicObjectCollection GetSaleOrderByOrgIdAndContractNo(string orgId, string contractNo)
|
|||
|
|
{
|
|||
|
|
var sqlTemp = @"/*dialect*/SELECT
|
|||
|
|
*
|
|||
|
|
FROM
|
|||
|
|
T_SAL_ORDER t1
|
|||
|
|
LEFT JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
|
|||
|
|
WHERE
|
|||
|
|
1 = 1
|
|||
|
|
AND t1.FDOCUMENTSTATUS = 'C'
|
|||
|
|
AND t1.FCANCELSTATUS = 'A'
|
|||
|
|
AND t1.FSALEORGID = '{0}'
|
|||
|
|
AND t1.F_CONTRACTNUMBER = '{1}'
|
|||
|
|
";
|
|||
|
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
|||
|
|
var resultData = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
|||
|
|
return resultData;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获取销售订单收款金额
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public decimal GetSaleOrderReceiveAmount(string orgId, string billNo)
|
|||
|
|
{
|
|||
|
|
var saleOrder = this.GetSaleOrderByBillNoAndOrgId(orgId, billNo);
|
|||
|
|
var date = Convert.ToDateTime(saleOrder["FDATE"]);
|
|||
|
|
ReportDataParam param = new ReportDataParam()
|
|||
|
|
{
|
|||
|
|
ReturnJsonData = true,
|
|||
|
|
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
|
|||
|
|
IsVerifyBaseDataField = true,
|
|||
|
|
Model = new Model()
|
|||
|
|
{
|
|||
|
|
FSaleOrgList = orgId,
|
|||
|
|
FSoFromDate = date.AddDays(-2),
|
|||
|
|
FSoToDate = date.AddDays(1),
|
|||
|
|
FSaleOFrom = billNo,
|
|||
|
|
FSaleOTo = billNo,
|
|||
|
|
FFormCloseStatus = "ALL",
|
|||
|
|
FFormStatus = "C",
|
|||
|
|
FPriceFrom = "SALORDERBILL",
|
|||
|
|
FBusCloseStatus = "ALL",
|
|||
|
|
FMergingSOHeader = true,
|
|||
|
|
FIncludedUnfilledOrders = false,
|
|||
|
|
FIsRecWithMat = true,
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
var paramString = JsonConvert.SerializeObject(param);
|
|||
|
|
var reusltString = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString).ToString();
|
|||
|
|
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(reusltString);
|
|||
|
|
var rows = result.Result.Rows;
|
|||
|
|
var dataRow = rows.Where(n => n.FBILLNO == billNo).FirstOrDefault();
|
|||
|
|
if (dataRow != null)
|
|||
|
|
{
|
|||
|
|
return Convert.ToDecimal(dataRow.FALLMATCHAMOUNT);
|
|||
|
|
}
|
|||
|
|
return 0m;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public DynamicObject GetSaleOrderByBillNoAndOrgId(string orgId, string billNo)
|
|||
|
|
{
|
|||
|
|
var sqlTemp = @"/*dialect*/SELECT
|
|||
|
|
*
|
|||
|
|
FROM
|
|||
|
|
T_SAL_ORDER t1
|
|||
|
|
WHERE
|
|||
|
|
1 = 1
|
|||
|
|
AND t1.FSALEORGID = '{0}'
|
|||
|
|
AND t1.FBILLNO = '{1}'
|
|||
|
|
";
|
|||
|
|
var sql = string.Format(sqlTemp, orgId, billNo);
|
|||
|
|
var result = DBServiceHelper.ExecuteDynamicObject(this.ctx, sql);
|
|||
|
|
if (result.Count == 0)
|
|||
|
|
{
|
|||
|
|
throw new Exception($"组织:{orgId},没有找到编号为 {billNo} 的销售订单");
|
|||
|
|
}
|
|||
|
|
return result[0];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public List<SaleExecuteOut> GetSaleOrderReceiveAmountByDate(string orgId, DateTime startDate, DateTime endDate)
|
|||
|
|
{
|
|||
|
|
ReportDataParam param = new ReportDataParam()
|
|||
|
|
{
|
|||
|
|
ReturnJsonData = true,
|
|||
|
|
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
|
|||
|
|
IsVerifyBaseDataField = true,
|
|||
|
|
Model = new Model()
|
|||
|
|
{
|
|||
|
|
FSaleOrgList = orgId,
|
|||
|
|
FSoFromDate = startDate,
|
|||
|
|
FSoToDate = startDate,
|
|||
|
|
FFormCloseStatus = "ALL",
|
|||
|
|
FFormStatus = "C",
|
|||
|
|
FPriceFrom = "SALORDERBILL",
|
|||
|
|
FBusCloseStatus = "ALL",
|
|||
|
|
FMergingSOHeader = true,
|
|||
|
|
FIncludedUnfilledOrders = false,
|
|||
|
|
FIsRecWithMat = true,
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
var paramString = JsonConvert.SerializeObject(param);
|
|||
|
|
var reusltString = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString).ToString();
|
|||
|
|
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(reusltString);
|
|||
|
|
var rows = result.Result.Rows;
|
|||
|
|
var dataRow = rows.Where(n => n.FBILLNO.Trim() == string.Empty).ToList();
|
|||
|
|
return dataRow;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|