2025-05-09 15:59:00 +08:00

184 lines
8.2 KiB
C#

using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Pilot_KD_Parino.SQL
{
public class SqlManage_yuyubo
{
/// <summary>
/// 获取核销收款单信息
/// </summary>
/// <returns></returns>
public static DynamicObjectCollection GetWriteReceiveDate3(Context ctx, string FORGID,string where )
{
//定义SQL,调用物料视图
string sql = string.Format($@"/*dialect*/
SELECT A.FID,
A.FSALEERID,
A.FCONTACTUNIT,
A.FREMARK,
A.F_AMOUNT as 'FYAMOUNT',
A.FBILLNO AS 'FBILLNO',
DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE',
A.FRECAMOUNT AS 'FALLAMOUNT',
A.FRECAMOUNTFOR as 'FALLAMOUNTY',
A.FRECAMOUNT-A.F_AMOUNT as 'FDAMOUNT',
A.FCURRENCYID as 'FCurr',
A.FCREATORID as 'FCREATORID'
FROM T_AR_RECEIVEBILL A
WHERE A.FDOCUMENTSTATUS = 'C'
AND A.FISINIT != '1'
AND A.FRECAMOUNT != A.F_AMOUNT
AND A.FRECAMOUNT >= A.F_AMOUNT {where}
order by FCONTACTUNIT,A.FID desc ", FORGID);
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
/// <summary>
/// 获取核销销售订单信息
/// </summary>
/// <returns></returns>
public static DynamicObjectCollection GetWriteOrderDate3(Context ctx, string FORGID,string where )
{
//定义SQL,调用物料视图 AND A.FBusinessType='NORMAL'
/*
* SELECT case when FBusinessType='NORMAL' then (FDAMOUNT2+[整单累计退货金额]) else 0 end AS FDAMOUNT, * FROM
*
*/
string sql = string.Format($@"/*dialect*/
SELECT FDAMOUNT2 as FDAMOUNT, * FROM
(
SELECT A.FID, A.FBusinessType,
A.FSALERID,
A.F_CONTRACTNUMBER,
A.FCUSTID,
A.F_PROJECTNAME,
A.FCREATORID,
A.FBILLNO AS 'FBILLNO',
DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE',
C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' ,
C.FBILLALLAMOUNT as 'FALLAMOUNTY',
ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT',
C.FBILLALLAMOUNT_LC-A.F_AMOUNT as 'FDAMOUNT2',
C.FSETTLECURRID as 'FCurr',
case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' ,
'销售订单' as 'FTYPE',
0.00 AS BenCi,
CASE WHEN A.F_Ordercategory ='670cca03263357' THEN 'P类合同' else '非P类合同' end as F_Ordercategory2,
A.F_Ordercategory AS F_Ordercategory,
(
SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM (
SELECT F_PaperNumber, t0.FSALEORGID,
CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX
WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice
--FAFTERTOTALTAX
FROM T_IV_SALESIC t0 WITH(NOLOCK)
INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID
--WHERE F_PaperNumber='P202502070004'
) AD WHERE AD.F_PaperNumber = A.F_contractnumber AND ad.FSALEORGID=a.FSALEORGID
GROUP BY F_PaperNumber, FSALEORGID
) as FInvoiceAmount,
(select SUM(bb.F_TotalAmoun) from dbo.T_SAL_DELIVERYNOTICE bb WITH(NOLOCK) WHERE bb.FSaleOrgId=a.FSALEORGID AND bb.F_Papercontract=a.F_contractnumber
AND 30 >= DATEDIFF(DAY,bb.FDATE,GETDATE()) AND bb.FDocumentStatus='C' ) as FaHuoAmount30Days,
(
SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM (
SELECT F_PaperNumber, t0.FSALEORGID,
CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX
WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice
FROM T_IV_SALESIC t0 WITH(NOLOCK)
INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID
WHERE 30 >= DATEDIFF(DAY,t0.FDATE,GETDATE())
) AD WHERE AD.F_PaperNumber = A.F_contractnumber AND ad.FSALEORGID=a.FSALEORGID
GROUP BY F_PaperNumber, FSALEORGID
) as FInvoiceAmount30Days
,[整单累计退货金额]=ISNULL((
SELECT SUM(CC.FBillAllAmount_LC) AS '累计退货金额'
FROM T_SAL_ORDER AA
INNER JOIN T_SAL_ORDERFIN CC ON CC.FID =AA.FID
WHERE AA.FDOCUMENTSTATUS= 'C' AND ISNULL(AA.F_CONTRACTNUMBER,'') !='' AND AA.F_contractnumber LIKE A.F_contractnumber+'%'
AND AA.fid<>A.fid AND aa.FSALEORGID=a.FSALEORGID),0)
FROM T_SAL_ORDER A
INNER JOIN T_SAL_ORDERFIN C ON C.FID =A.FID
WHERE
C.FBILLALLAMOUNT_LC >0
AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_CONTRACTNUMBER,'')!=''
AND (A.F_AMOUNT < C.FBILLALLAMOUNT_LC
or A.F_AMOUNT IS NULL) {where}
) A ORDER BY A.FCUSTID,a.FDATE ");
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
/// <summary>
/// 获取未核销的发货通知单信息
/// </summary>
/// <returns></returns>
public static DynamicObjectCollection GetFaHuoTongZhiDan(Context ctx, string FORGID, string where)
{
//定义SQL,调用物料视图 AND A.FBusinessType='NORMAL'
/*
* SELECT case when FBusinessType='NORMAL' then (FDAMOUNT2+[整单累计退货金额]) else 0 end AS FDAMOUNT, * FROM
*
*/
string sql = string.Format($@"/*dialect*/
SELECT FDAMOUNT2 as FDAMOUNT, * FROM
(
SELECT A.FID, A.FBusinessType,
A.FSalesManID as FSALERID,
A.F_Papercontract as F_CONTRACTNUMBER,
A.FCustomerID as FCUSTID,
A.F_PROJECTNAME,
A.FCREATORID,
A.FBILLNO AS 'FBILLNO',
DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE',
C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' ,
C.FBILLALLAMOUNT as 'FALLAMOUNTY',
ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT',
C.FBILLALLAMOUNT_LC-A.F_AMOUNT as 'FDAMOUNT2',
C.FSETTLECURRID as 'FCurr',
case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' ,
'发货通知单' as 'FTYPE',
0.00 AS BenCi,
'' as F_Ordercategory2,
'' AS F_Ordercategory,
(
SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM (
SELECT F_PaperNumber, t0.FSALEORGID,
CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX
WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice
--FAFTERTOTALTAX
FROM T_IV_SALESIC t0 WITH(NOLOCK)
INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID
--WHERE F_PaperNumber='P202502070004'
) AD WHERE AD.F_PaperNumber = A.F_Papercontract AND ad.FSALEORGID=a.FSALEORGID
GROUP BY F_PaperNumber, FSALEORGID
) as FInvoiceAmount,
0 as FaHuoAmount30Days,
0 as FInvoiceAmount30Days
,[整单累计退货金额]=0
FROM T_SAL_DELIVERYNOTICE A
INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID
WHERE
C.FBILLALLAMOUNT_LC > 0
AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_Papercontract,'')!=''
AND (A.F_AMOUNT < C.FBILLALLAMOUNT_LC
or A.F_AMOUNT IS NULL) {where}
) A ORDER BY A.FCUSTID,a.FID desc ");
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
}
}