• 金蝶云星空SQL 85.47 kB 2024-06-03 22:06
  • Position: 金蝶云星空SQL / 统计销售期间成本利润毛利.sql

    ---ͳ������ڼ�ɱ�����ë��
    
    
    --EXEC [Gold_SalesAn] '2023-07-02'
    
    --IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Gold_SalesAn]') AND type in (N'P', N'PC'))
    --DROP PROCEDURE [dbo].[Gold_SalesAn]
    --GO
    
    --create PROCEDURE [dbo].[Gold_SalesAn]
    --	@begdate date	
    --	with encryption
    --AS
    --set nocount on
    
    declare @begdate CHAR(10)
    set @begdate='2023-07-02'
    
    
    declare @YEAR CHAR(4)
    declare @MONTH  CHAR(2)
    
    declare @FirstDay date
    declare @LastDay date
    declare @OrgId int
    declare @AMT decimal
    declare @POAMT decimal
    
    set @YEAR=DATEPART(yyyy,@begdate)
    set @MONTH=DATEPART(MM,@begdate)
    set @OrgId=1
    
    set @FirstDay=@YEAR+'-'+@MONTH+'-01'
    select @LastDay=DATEADD(dd, -1, DATEADD(mm, DATEDIFF(mm, 0, @FirstDay)+1, 0))
    
    --set @LastDay=@YEAR+'-'+@MONTH+'-02'
    --select @FirstDay  AS firstday, @LastDay AS lastday;
    
    select 
    @YEAR+@MONTH as �ڼ�
    ,SUM(CASE WHEN (oue.F_Gold_Decimal is not null and oue.FREALQTY is not null) THEN oue.F_Gold_Decimal*oue.FREALQTY ELSE 0 END) AS ��۶�
    ,SUM(FALLAMOUNT) ��˰�ϼ�
    ,SUM(CASE WHEN (ouef.FCOSTPRICE is not null and oue.FREALQTY is not null) THEN ouef.FCOSTPRICE*oue.FREALQTY ELSE 0 END) AS ʵ�ʳɱ�
    ,SUM(ouef.FCOSTPRICE) AS �ɱ����ۺϼ�
    
    --FStockOrgId
    --,ou.FBILLNO ���ⵥ��
    --,CONVERT(varchar(230), ou.FDATE, 23) ����
    --,oue.FSEQ ���
    --,oue.FREALQTY ʵ�����
    --,ouef.FTAXPRICE ��˰����
    --,F_Gold_Decimal ʵ�ʵ���
    ----,FBILLALLAMOUNT ��˰�ϼ�
    --,oue.F_Gold_Decimal*oue.FREALQTY ��۶�
    --,ouef.FCOSTPRICE  �ɱ���
    --,(ouef.FCOSTPRICE*oue.FREALQTY) ʵ�ʳɱ�
    --,(oue.F_Gold_Decimal-ouef.FCOSTPRICE)*oue.FREALQTY �
    --,CASE
    -- WHEN ouef.FTAXPRICE<>0 then (oue.F_Gold_Decimal-ouef.FCOSTPRICE)/ouef.FTAXPRICE
    --else  0 end 
    --as ���
    into #t1
     from T_SAL_OUTSTOCK ou
    left join T_SAL_OUTSTOCKENTRY oue on ou.fid=oue.FID --�����ϸ
    left join T_SAL_OUTSTOCKENTRY_F ouef on oue.FENTRYID=ouef.FENTRYID--����
    
    where ou.FDOCUMENTSTATUS='C'
    and ou.FCANCELSTATUS='A'
    and ou.FStockOrgId=@OrgId
    and ou.FDATE between @FirstDay and @LastDay
    --order by ou.FDATE ,ou.FBILLNO asc
    
    
    
    
    SELECT B.FDIMENSIONID FORGID
    ,M.FMATERIALID,M.FNUMBER,ST.FSTOCKID
    ,O.FYEAR,O.FPERIOD
    ,SUM(CASE WHEN B.FENDINITKEY=1 THEN B.FAMOUNT ELSE 0 END) AS ��ĩ���
    into #t2
    FROM T_HS_BALANCE_H B  --��ʷ������Ϣ
    
    LEFT JOIN T_HS_OUTACCTG O ON B.FID=O.FID --��������--ȡ����
    LEFT JOIN T_HS_STOCKDIMENSION S ON B.FDIMEENTRYID=S.FENTRYID  --���
    LEFT JOIN T_BD_MATERIAL M ON S.FMASTERID=M.FMASTERID AND B.FDIMENSIONID=M.FUSEORGID
    LEFT JOIN T_BD_STOCK AS ST ON ST.FSTOCKID =S.FSTOCKID
    
    where O.FYEAR=@YEAR
    and O.FPERIOD=@MONTH
    and B.FDIMENSIONID=@OrgId
    
    
    GROUP BY B.FDIMENSIONID,M.FMATERIALID,O.FYEAR,O.FPERIOD,M.FNUMBER ,ST.FSTOCKID
    
    select @AMT=sum(��ĩ���) from #t2
    where ��ĩ���<>0
    
    drop table #t2
    
    
    
    select
    --cast(sum(FSTOCKBASEQTY) as decimal(23,2)) 
    --por.FREMAINSTOCKINQTY
    --,poef.FTAXPRICE
    @POAMT=SUM(CASE WHEN (por.FREMAINSTOCKINQTY is not null and poef.FTAXPRICE is not null) THEN por.FREMAINSTOCKINQTY*poef.FTAXPRICE ELSE 0 END)
    --,CASE WHEN (por.FREMAINSTOCKINQTY is not null and poef.FTAXPRICE is not null) THEN por.FREMAINSTOCKINQTY*poef.FTAXPRICE ELSE 0 END �ɹ���;
    from t_PUR_POOrder po 
    left join t_PUR_POOrderEntry poe on po.fid=poe.FID ---�����ϸ
    left join T_PUR_POORDERENTRY_F poef on poef.FENTRYID=poe.FENTRYID ---����
    left join T_PUR_POORDERENTRY_R por on poe.FENTRYID=por.FENTRYID
    where
    po.FDOCUMENTSTATUS = 'C'--�����
    and po.FCLOSESTATUS='A' --δ�ر�
    and po.FCANCELSTATUS<> 'B' --δȡ�
    and po.FPURCHASEORGID=1--�ɹ���֯
    and po.F_Gold_Assistant<>'643ba62e49d104'--���
    and po.F_Gold_Assistant<>''--������״̬
    and po.FDATE between @FirstDay and @LastDay
    
    
    
    
    
    select *
    , (��۶�-ʵ�ʳɱ�) as ë��
    ,CASE
     WHEN ��۶�<>0 then (��۶�-ʵ�ʳɱ�)/��۶�
    else  0 end 
    as ���
    
    ,@AMT �����
    ,@POAMT �ɹ���;
    
    
    from #t1
    
    
    
    drop table #t1

    Powered by kodbox V1.67

    Copyright © kodcloud.com.

    Files