using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.K3.FIN.App.Core.Match.Object;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_LTHPilot_ORDER.Service
{
///
/// 销售发票服务类
///
public class SaleSicsService
{
private Context ctx;
public SaleSicsService(Context ctx)
{
this.ctx = ctx;
}
///
/// 刷新销售订单累计开票金额
///
///
///
public int UpdateSaleOrderSumSicsamountBySaleOrder(DynamicObject saleOrder)
{
// 销售订单ID
var saleOrderId = saleOrder["FID"].ToString();
// 纸质合同号
var contractNo = saleOrder["F_CONTRACTNUMBER"].ToString();
// 销售组织Id
var saleOrgId = saleOrder["FSALEORGID"].ToString();
var sqlTemp = @"/*dialect*/UPDATE t1
SET
t1.F_INVOICEAMOUNT = ISNULL (TEMP1.FAFTERTOTALTAXFOR, 0)
FROM
T_SAL_ORDER t1
INNER JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
LEFT JOIN (
SELECT
FSALEORGID,
F_PaperNumber,
SUM(FAFTERTOTALTAX) FAFTERTOTALTAX, -- 价税合计本币
SUM(FAFTERTOTALTAXFOR) FAFTERTOTALTAXFOR -- 价税合计原币
FROM
(
SELECT
v1.FSALEORGID, -- 销售组织
v1e.F_CONTRACTNO F_PaperNumber, -- 纸质合同号
ISNULL (v1e_o.FALLAMOUNT, 0) FAFTERTOTALTAX, -- 价税合计本币
ISNULL (v1e.FALLAMOUNTFOR, 0) FAFTERTOTALTAXFOR -- 价税合计
FROM
T_IV_SALESIC v1
INNER JOIN T_IV_SALESICENTRY v1e ON v1.FID = v1e.FID
LEFT JOIN T_IV_SALESICENTRY_O v1e_o ON v1e_o.FENTRYID = v1e.FENTRYID
WHERE
1 = 1
AND v1.FDOCUMENTSTATUS = 'C'
AND v1.FCANCELSTATUS = 'A'
AND v1.F_SFQC = 0
AND v1.FSALEORGID = '{0}'
AND v1e.F_CONTRACTNO = '{1}'
UNION ALL
SELECT
'100302' FSALEORGID, -- 销售组织
合同号 F_PaperNumber, -- 纸质合同号
SUM(ISNULL (发票金额, 0)) FAFTERTOTALTAX, -- 价税合计本币
SUM(ISNULL (发票原币金额, 0)) FAFTERTOTALTAXFOR -- 价税合计
FROM
oldk3ICSale0802
WHERE
1 = 1
AND 合同号 = '{1}'
GROUP BY
合同号
) temp02
GROUP BY
FSALEORGID,
F_PaperNumber
) TEMP1 ON t1.F_CONTRACTNUMBER = TEMP1.F_PaperNumber
AND t1.FSALEORGID = TEMP1.FSALEORGID
WHERE
t1.FID = '{2}'
";
var sql = string.Format(sqlTemp, saleOrgId, contractNo, saleOrderId);
return DBServiceHelper.Execute(ctx, sql);
}
///
///
///
///
///
public DynamicObjectCollection GetSaleSiceListByApprovedDate(DateTime approvedDate)
{
var sqlTemp = @"/*dialect*/SELECT DISTINCT
t1.FSALEORGID,
ISNULL(t1.F_PaperNumber, '') contractNo
FROM
T_IV_SALESIC t1
WHERE
1 = 1
AND t1.FAPPROVEDATE > '{0}'
";
var sql = string.Format(sqlTemp, approvedDate.ToString("yyyy-MM-dd HH:mm:dd"));
return DBServiceHelper.ExecuteDynamicObject(ctx, sql);
}
}
}