You are on page 1of 16

------------------------------------------------------------------------------

-- DDL for Stored procedure 'SP_ORDER_CALC_ALL ;1'


-----------------------------------------------------------------------------
if exists (select 1 from sysobjects where name = 'SP_ORDER_CALC_ALL' and type
= 'P')
drop proc SP_ORDER_CALC_ALL
go

-- ==============================================================================

-- ==============================================================================

-- ==============================================================================

--drop proc SP_ORDER_CALC_ALL


--exec SP_ORDER_CALC_ALL '2023/10/02',40,'1',602,602,1

CREATE PROCEDURE SP_ORDER_CALC_ALL


(@DATE_EDIT DATETIME ,@FACT_ID DEC(2,0),@TYP CHAR(4) ,@F_ID DEC(8,2),@E_ID
DEC(8,2), @LOCALE_CODE DEC(1,0))
with recompile
AS
BEGIN

DECLARE
@FACT DEC(2,0),

@ORD_ID DEC(8,2),

@TYPE CHAR(4),

@SER DEC(2,0),

@DATE_WRITE DATETIME ,

@SANF_ID CHAR(9) ,

@QTY_R DECIMAL(13,4) ,

@REC_DATE DATETIME ,

@REC_ID VARCHAR(10) ,

@SUP_NAME VARCHAR(100),

@PRICE DEC(13,4) ,

@BALANCE DEC(13,4) ,

@INCOME1 DEC(13,4) ,

@INCOME2 DEC(13,4) ,

@OUTCOME DEC(13,4) ,

@INCOME11 DEC(13,4) ,

@INCOME22 DEC(13,4) ,
@INCOME33 DEC(13,4) ,

@CONS1 DEC(13,2),

@CONS1_EQ DEC(13,2),

@CONS2 DEC(13,2),

@CONS2_EQ DEC(13,2),

@CONS3 DEC(13,2),

@CONS3_EQ DEC(13,2),

@CONS4 DEC(13,2) ,

@CONS4_EQ DEC(13,2) ,

@REQ_YR_CONS DEC(13,2) ,

@last_in_no char(10) ,

@last_in_date datetime ,

@DATE_STRT DATETIME

DECLARE @START_SES3 DATETIME , @START_SES2 DATETIME , @START_SES1 DATETIME

DECLARE @FINSH_SES3 DATETIME , @FINSH_SES2 DATETIME , @FINSH_SES1 DATETIME

DECLARE @START_YY3 INT , @START_YY2 INT , @START_YY1 INT


DECLARE @FINSH_YY3 INT , @FINSH_YY2 INT , @FINSH_YY1 INT

SELECT @DATE_STRT= FINANCIAL_YEAR_START FROM SCM_SYSTEM_TABLE

SELECT @START_YY3 = datepart(YY,@DATE_STRT)-1


SELECT @START_SES3 = convert(datetime,'7'+'/1/'+convert(char(4),@START_YY3))

SELECT @FINSH_YY3 = datepart(YY,@DATE_STRT)


SELECT @FINSH_SES3 = convert(datetime,'6'+'/30/'+convert(char(4),@FINSH_YY3))

SELECT @START_YY2 = datepart(YY,@DATE_STRT)-2


SELECT @START_SES2 = convert(datetime,'7'+'/1/'+convert(char(4),@START_YY2))

SELECT @FINSH_YY2 = datepart(YY,@DATE_STRT)-1


SELECT @FINSH_SES2 = convert(datetime,'6'+'/30/'+convert(char(4),@FINSH_YY2))

SELECT @START_YY1 = datepart(YY,@DATE_STRT)-3


SELECT @START_SES1 = convert(datetime,'7'+'/1/'+convert(char(4),@START_YY1))

SELECT @FINSH_YY1 = datepart(YY,@DATE_STRT)-2


SELECT @FINSH_SES1 = convert(datetime,'6'+'/30/'+convert(char(4),@FINSH_YY1))

--SELECT @START_SES3 , @START_SES2 , @START_SES1 , @FINSH_SES3 , @FINSH_SES2 ,


@FINSH_SES1 , @START_YY3 , @START_YY2 , @START_YY1 , @FINSH_YY3 , @FINSH_YY2 ,
@FINSH_YY1
--SELECT @START_SES3 = convert(datetime,'7'+'/1/'+convert(char(4),@START_YY3))

SELECT @PRICE = 0 , @BALANCE= 0 , @INCOME1= 0 , @INCOME2= 0 ,

@OUTCOME= 0 ,@INCOME11= 0 , @INCOME22= 0 ,@INCOME33= 0 ,

@CONS1 = 0 , @CONS1_EQ= 0 , @CONS2= 0 ,@CONS2_EQ= 0 ,

@CONS3= 0 , @CONS3_EQ= 0 , @CONS4= 0 ,@CONS4_EQ= 0 ,

@REQ_YR_CONS = 0

--SELECT @START_SES = convert(datetime,convert(char(2),datepart(MM,getdate()))


+'/'+convert(char(2),datepart(DD,getdate()))
+'/'+convert(char(4),datepart(YY,getdate())))
--SELECT @START_SES =
convert(datetime,convert(char(2),datepart(MM,getdate()))+'/1/'+convert(char(4),date
part(YY,getdate())))

DELETE FROM DM_ORDER_CALC WHERE ORD_DATE=@DATE_EDIT AND TYPE =@TYP AND


FACT_ID= @FACT_ID AND ORD_ID BETWEEN @F_ID AND @E_ID
COMMIT

UPDATE DM_ORDER_ITEMS_IC
SET DM_ORDER_ITEMS_IC.ORD_DATE = DM_ORDER_IC.ORD_DATE
FROM DM_ORDER_IC
WHERE ( DM_ORDER_ITEMS_IC.FACT_ID = DM_ORDER_IC.FACT_ID ) and
( DM_ORDER_ITEMS_IC.ORD_ID = DM_ORDER_IC.ORD_ID ) AND
( DM_ORDER_ITEMS_IC.TYPE = DM_ORDER_IC.TYPE ) AND

(DM_ORDER_ITEMS_IC.TYPE =@TYP) AND


( DM_ORDER_ITEMS_IC.FACT_ID= @FACT_ID ) AND
(DM_ORDER_ITEMS_IC.ORD_ID BETWEEN @F_ID AND @E_ID)
COMMIT
-- DECLARE CUSOR TO SELECT ALL ITEMS FROM DM_ORDER_ITEMS_IC

DECLARE CUR_ORDER_ITEMS CURSOR


FOR SELECT DM_ORDER_ITEMS_IC.FACT_ID,

DM_ORDER_ITEMS_IC.ORD_ID,

DM_ORDER_ITEMS_IC.ORD_DATE,

DM_ORDER_ITEMS_IC.TYPE,

DM_ORDER_ITEMS_IC.SER,

DM_ORDER_ITEMS_IC.ITM_ID

FROM DM_ORDER_ITEMS_IC
WHERE DM_ORDER_ITEMS_IC.ORD_DATE = @DATE_EDIT AND TYPE =@TYP AND
FACT_ID= @FACT_ID AND ORD_ID BETWEEN @F_ID AND @E_ID
FOR READ ONLY

OPEN CUR_ORDER_ITEMS
FETCH CUR_ORDER_ITEMS INTO @FACT, @ORD_ID , @DATE_WRITE ,@TYPE,@SER,@SANF_ID
WHILE @@SQLSTATUS !=2
BEGIN
-- Calculate the balance of the item from master table

SELECT @INCOME1= sum(isnull(ffirst_qty,0)) +


sum(isnull(in_qty,0)) - sum(isnull(out_qty,0)) - sum(isnull(ein_qty,0)) +
sum(isnull(eout_qty,0))
from master m , stores_save s
WHERE m.item_no = @SANF_ID
AND m.factor_no = CONVERT(CHAR(2),@FACT)

AND m.store_no = s.store_no AND kind_code = 1


-- AND local_code=@LOCALE_CODE
--AND (isnull(last_in_date,'1900/01/01') > @DATE_STRT or
isnull(last_out_date,'1900/01/01') > @DATE_STRT)

SELECT @INCOME2= isnull((select sum(trans_qty) FROM transactions


t , stores_save s
WHERE tran_cd = "1" AND upd_flg <> "1"
AND isnull(suppl_date,null)<= getdate()
AND ( t.store_no = s.store_no) AND ( kind_code
= 1)
and tran_date >= @DATE_STRT
-- AND (local_code=@LOCALE_CODE)

AND t.factor_no = CONVERT(CHAR(2),@FACT) AND


t.item_no = @SANF_ID ) ,0)
+ isnull((select sum(trans_qty) FROM transactions t
, stores_save s
WHERE tran_cd = "4" AND upd_flg <>
"1" AND isnull(suppl_date,null) <= getdate()
AND ( t.store_no = s.store_no) AND ( kind_code = 1)

and tran_date >= @DATE_STRT


-- AND (local_code=@LOCALE_CODE)

AND t.factor_no = CONVERT(CHAR(2),@FACT)


AND t.item_no = @SANF_ID ) ,0)
SELECT @OUTCOME= isnull((select sum(trans_qty) FROM transactions t ,
stores_save s
WHERE tran_cd = "2" AND upd_flg <> "1"
AND isnull(suppl_date,null)<= getdate()
AND ( t.store_no = s.store_no) AND ( kind_code =
1)
and tran_date >= @DATE_STRT
-- AND (local_code=@LOCALE_CODE)
AND t.factor_no =
CONVERT(CHAR(2),@FACT) AND t.item_no = @SANF_ID ) ,0)
+ isnull((select sum(trans_qty) FROM
transactions t , stores_save s
WHERE tran_cd = "3" AND upd_flg <>
"1" AND isnull(suppl_date,null)<= getdate()
AND ( t.store_no = s.store_no) AND ( kind_code =
1)
and tran_date >= @DATE_STRT
-- AND (local_code=@LOCALE_CODE)
AND t.factor_no =
CONVERT(CHAR(2),@FACT) AND t.item_no = @SANF_ID ) ,0)
SELECT @BALANCE =isnull(@INCOME1,0) + isnull(@INCOME2,0) -
isnull(@OUTCOME,0)

-- CHECK IF THE ITEM HAS ANY RECORDS IN TRANSACTIONS TABLE

IF ISNULL(@BALANCE,0) <= 0
BEGIN
SELECT @BALANCE = 0
END

SELECT @INCOME11= sum(isnull(in_qty,0)) - sum(isnull(ein_qty,0))

from master m , stores_save s


WHERE m.item_no = @SANF_ID
AND m.factor_no = CONVERT(CHAR(2),@FACT)

AND m.store_no = s.store_no AND kind_code = 1


-- AND (local_code=@LOCALE_CODE)

SELECT @INCOME22= isnull((select sum(trans_qty) FROM transactions


t , stores_save s
WHERE tran_cd = "1" AND
upd_flg <> "1"
AND ( t.store_no = s.store_no) AND ( kind_code
= 1)
--AND tran_date <= getdate()

AND tran_date between @DATE_STRT and getdate()

-- AND (local_code=@LOCALE_CODE)

AND t.factor_no =
CONVERT(CHAR(2),@FACT) AND t.item_no = @SANF_ID ) ,0)
- isnull((select sum(trans_qty) FROM
transactions t , stores_save s
WHERE tran_cd = "4" AND
upd_flg <> "1"
--AND tran_date <= getdate()

AND tran_date between @DATE_STRT and getdate()

AND ( t.store_no = s.store_no) AND ( kind_code


= 1)
-- AND (local_code=@LOCALE_CODE)

AND t.factor_no =
CONVERT(CHAR(2),@FACT) AND t.item_no = @SANF_ID ) ,0)

SELECT @INCOME33 = isnull(@INCOME11,0) + isnull(@INCOME22,0)

--SELECT @DATE_STRT ,@SANF_ID,@BALANCE ,isnull(@INCOME1,0) , isnull(@INCOME2,0) ,


isnull(@OUTCOME,0),@INCOME33 ,isnull(@INCOME11,0) ,isnull(@INCOME22,0)

-- STEP 3 : Get the supplier name


-------------- CALCULATE QUANTITY OF PREVIOUS YEAR

SELECT @CONS2= isnull(SUM(h.htrans_qty) ,0)

FROM history h , stores_save s

WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)

and h.hitem_no = @SANF_ID

and h.htran_cd = '3'


and h.hstore_no = s.store_no AND kind_code = 1
-- AND (local_code=@LOCALE_CODE)
and h.htran_date between @START_SES3 AND @FINSH_SES3

SELECT @CONS2_EQ= isnull(SUM(h.htrans_qty) ,0)

FROM history h , stores_save s

WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)

and h.hitem_no = @SANF_ID

and h.htran_cd = '4'


and h.hstore_no = s.store_no AND kind_code = 1
-- AND (local_code=@LOCALE_CODE)
and h.htran_date between @START_SES3 AND @FINSH_SES3

SELECT @CONS2 = @CONS2 - @CONS2_EQ


SELECT @CONS3= isnull(SUM(h.htrans_qty) ,0)

FROM history h , stores_save s

WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)

and h.hitem_no = @SANF_ID

and h.htran_cd = '3'


and h.hstore_no = s.store_no AND kind_code = 1
-- AND (local_code=@LOCALE_CODE)
and h.htran_date between @START_SES2 AND @FINSH_SES2

SELECT @CONS3_EQ= isnull(SUM(h.htrans_qty) ,0)

FROM history h , stores_save s

WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)

and h.hitem_no = @SANF_ID

and h.htran_cd = '4'


and h.hstore_no = s.store_no AND kind_code = 1
-- AND (local_code=@LOCALE_CODE)
and h.htran_date between @START_SES2 AND @FINSH_SES2

SELECT @CONS3 = @CONS3 - @CONS3_EQ


SELECT @CONS4= isnull(SUM(h.htrans_qty) ,0)

FROM history h , stores_save s

WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)

and h.hitem_no = @SANF_ID

and h.htran_cd = '3'


and h.hstore_no = s.store_no AND kind_code = 1
-- AND (local_code=@LOCALE_CODE)
and h.htran_date between @START_SES1 AND @FINSH_SES1

SELECT @CONS4_EQ= isnull(SUM(h.htrans_qty) ,0)

FROM history h , stores_save s

WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)

and h.hitem_no = @SANF_ID

and h.htran_cd = '4'


and h.hstore_no = s.store_no AND kind_code = 1
-- AND (local_code=@LOCALE_CODE)
and h.htran_date between @START_SES1 AND @FINSH_SES1

SELECT @CONS4 = round(@CONS4 - @CONS4_EQ ,2)

SELECT @REQ_YR_CONS=
isnull(round(SUM(DM_ORDER_ITEMS_IC.QTY) ,0),2)
FROM DM_ORDER_ITEMS_IC
WHERE DM_ORDER_ITEMS_IC.ITM_ID = @SANF_ID

BEGIN
-- begin block of updating the orders table

INSERT INTO
DM_ORDER_CALC(FACT_ID,ORD_ID,TYPE,ORD_DATE,SER,ITM_ID,BALANCE,REC_ID,REC_DATE,PRICE
,SUP_NAME,
CONS1,CONS2,CONS3,CONS4,TOT_QTY_REQ,CALC_TYPE)

--VALUES (@FACT, @ORD_ID ,@TYPE ,


@DATE_WRITE,@SER,@SANF_ID,isnull(round(@BALANCE,2),0),@last_in_no,@last_in_date,@PR
ICE,@SUP_NAME,
VALUES (@FACT, @ORD_ID ,@TYPE ,
@DATE_WRITE,@SER,@SANF_ID,isnull(round(@BALANCE,2),0),null,null,null,null,

isnull(round(@INCOME33,2),0),isnull(round(@CONS2,2),0),isnull(round(@CONS3,2),0),is
null(round(@CONS4,2),0),isnull(round(@REQ_YR_CONS,2),0),2)

END

SELECT @PRICE = 0,@SUP_NAME=''


SELECT @last_in_date = NULL
SELECT @last_in_date = isnull((SELECT max((suppl_date)) FROM
history h , stores_save s
WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)

and h.hitem_no = @SANF_ID

and h.htrans_qty > 0

and h.htrans_val > 0

and h.htran_cd = '1'


AND isnull(suppl_date,null) <= getdate()
and h.hstore_no = s.store_no and kind_code = 1
-- AND (local_code=@LOCALE_CODE)
) ,NULL)

--
===================================================================================
===========
--declare @add_status int
--select @add_status = 0
--select @SANF_ID , @last_in_date
if @SANF_ID <> NULL
begin
--exec @add_status = proc_vend_payed_calc_05n @fac_cd,
@ses_y ,@PERC_51,@TAX_52
DECLARE TAX_STEAK CURSOR FOR
SELECT hitem_no , isnull(htrans_qty,0) , isnull(htrans_val,0) , suppl_no ,
suppl_date , suppl_name ,
round(isnull(htrans_val,0)/isnull(htrans_qty,0),2) ,
h.hstore_no , kind_code
FROM history h , stores_save s

WHERE h.hfactor_no =CONVERT(CHAR(2),@FACT)


and h.hitem_no = @SANF_ID

and h.suppl_date=@last_in_date
and h.htrans_qty > 0

and h.htrans_val > 0

and h.htran_cd = '1'


and h.hstore_no = s.store_no and kind_code = 1

order by h.hfactor_no, h.hitem_no, h.suppl_date , h.suppl_no

FOR READ ONLY


OPEN TAX_STEAK
DECLARE @h_dat DATETIME ,

@h_stor CHAR(13) ,

@h_item CHAR(9) ,

@h_no CHAR(10),

@h_nam CHAR(50),
@kind int ,
@h_qty DECIMAL(13,4) ,

@h_val DECIMAL(13,2) ,

@h_pric DECIMAL(13,2)

FETCH TAX_STEAK INTO @h_item , @h_qty , @h_val , @h_no , @h_dat ,


@h_nam ,@h_pric , @h_stor , @kind
WHILE @@SQLSTATUS !=2
BEGIN -->>$$$

--select @FACT, @ORD_ID ,@TYPE , @DATE_WRITE,@SER,@h_stor, @kind ,


@SANF_ID, @h_item , @h_qty , @h_val , @h_no , @h_dat , @h_nam ,@h_pric
UPDATE DM_ORDER_CALC
SET REC_DATE = @h_dat ,
REC_ID = @h_no,
PRICE = @h_pric,
SUP_NAME = @h_nam,
CALC_TYPE = 2
WHERE FACT_ID = @FACT and ORD_ID=@ORD_ID and TYPE= @TYPE
and ORD_DATE=@DATE_WRITE and SER=@SER and ITM_ID= @SANF_ID

FETCH TAX_STEAK INTO @h_item , @h_qty , @h_val , @h_no , @h_dat ,


@h_nam ,@h_pric , @h_stor , @kind
END -->>$$$
CLOSE TAX_STEAK
DEALLOCATE CURSOR TAX_STEAK

end
--
===================================================================================
============

FETCH CUR_ORDER_ITEMS INTO @FACT, @ORD_ID , @DATE_WRITE ,@TYPE,@SER,@SANF_ID

END

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
close CUR_ORDER_ITEMS
deallocate cursor CUR_ORDER_ITEMS
return 91
END

--===============================================================================

DECLARE CUR_ORDER_ITEMS1 CURSOR


FOR SELECT FACT_ID, ORD_ID,ORD_DATE,TYPE, SER,ITM_ID
FROM DM_ORDER_CALC d
WHERE d.ORD_DATE = @DATE_EDIT AND TYPE =@TYP AND FACT_ID= @FACT_ID

AND ORD_ID BETWEEN @F_ID AND @E_ID


--ORDER BY d.FACT_ID , d.ITM_ID , t.tran_date , t.page_no , t.line_no

FOR READ ONLY


DECLARE
@FACT1 DEC(2,0),

@ORD_ID1 DEC(8,2),

@TYPE1 CHAR(4),

@SER1 DEC(2,0),

@DATE_WRITE1 DATETIME ,

@SANF_ID1 CHAR(9) ,

@SUP_NAME1 VARCHAR(100),

@PRICE1 DEC(13,4) ,

@QTY1 DEC(13,4) ,

@VAL1 DEC(13,4) ,
@INCOME44 DEC(13,4) ,
@last_in_no1 char(10) ,
@last_in_date1 datetime ,
@trn_date1 datetime

OPEN CUR_ORDER_ITEMS1
FETCH CUR_ORDER_ITEMS1 INTO @FACT1, @ORD_ID1 , @DATE_WRITE1 , @TYPE1 , @SER1 ,
@SANF_ID1

WHILE @@SQLSTATUS !=2


BEGIN
SELECT @SUP_NAME1=''
SELECT @PRICE1 =0
SELECT @QTY1 =0
SELECT @VAL1 =0
SELECT @last_in_no1 = ''
SELECT @last_in_date1 = NULL
SELECT CONS1=0
select @INCOME44 = 0

IF EXISTS (SELECT 1 from transactions t , stores_save s

WHERE t.item_no = @SANF_ID1


AND t.factor_no = CONVERT(CHAR(2),@FACT1)

AND t.store_no = s.store_no AND kind_code = 1 --AND


(local_code=@LOCALE_CODE)
AND trans_qty > 0 AND trans_val > 0 AND tran_cd = '1'
AND upd_flg <> "1" )
BEGIN
/*
SELECT @INCOME44 = isnull((select sum(trans_qty) FROM
transactions t , stores_save s
WHERE tran_cd = "1" AND
upd_flg <> "1"
AND ( t.store_no = s.store_no) AND ( kind_code
= 1)
--AND tran_date <= getdate()
AND tran_date between @DATE_STRT and getdate()

-- AND (local_code=@LOCALE_CODE)

AND t.factor_no =
CONVERT(CHAR(2),@FACT1) AND t.item_no = @SANF_ID1 ) ,0)
- isnull((select sum(trans_qty) FROM
transactions t , stores_save s
WHERE tran_cd = "4" AND
upd_flg <> "1"
--AND tran_date <= getdate()

AND tran_date between @DATE_STRT and getdate()

AND ( t.store_no = s.store_no) AND ( kind_code


= 1)
-- AND (local_code=@LOCALE_CODE)

AND t.factor_no =
CONVERT(CHAR(2),@FACT1) AND t.item_no = @SANF_ID1 ) ,0)
*/
SELECT @last_in_date1 = isnull((SELECT max(isnull(suppl_date,null))
FROM transactions t , stores_save s
WHERE tran_cd = "1" AND
upd_flg <> "1"
AND tran_date between @DATE_STRT and
getdate()
AND ( t.store_no = s.store_no) AND
( kind_code = 1)
and
isnull(suppl_date,null)<= getdate() AND t.item_no = @SANF_ID1 ),null)

-- SELECT @last_in_no1 = isnull((SELECT max(isnull(suppl_no,'0')) FROM


transactions t , stores_save s
SELECT @last_in_no1 = isnull((SELECT isnull(suppl_no,'0') FROM
transactions t , stores_save s
WHERE tran_cd = "1" AND upd_flg <>
"1"
--AND tran_date between @DATE_STRT and getdate()

--AND tran_date <= getdate()


AND t.store_no = s.store_no AND kind_code = 1
AND t.item_no = @SANF_ID1 and
t.suppl_date=@last_in_date1),'0')
-- SELECT @SUP_NAME1= ' Not Found 2'

SELECT @SUP_NAME1= isnull((SELECT isnull(suppl_name,null) FROM


transactions t , stores_save s
WHERE tran_cd = "1" AND upd_flg <>
"1"
AND t.store_no = s.store_no AND kind_code = 1
AND t.item_no = @SANF_ID1
and t.suppl_no = @last_in_no1 and
t.suppl_date=@last_in_date1),null)

SELECT @PRICE1= 0
SELECT @PRICE1= isnull(round((isnull(trans_val,0) /
isnull(trans_qty,0) ),2),0)
FROM transactions t , stores_save s
WHERE tran_cd = "1" AND upd_flg <> "1" AND tran_date <=
getdate()
AND t.store_no = s.store_no AND kind_code = 1
AND t.item_no = @SANF_ID1 and
t.suppl_date=@last_in_date1

/*
UPDATE DM_ORDER_CALC
SET CONS1 = ISNULL(CONS1,0) + ISNULL(@INCOME44,0) ,
BALANCE = ISNULL(BALANCE,0) + ISNULL(@INCOME77,0) ,
CURRENCY = 1 ,
CALC_TYPE = 3
WHERE FACT_ID = @FACT1
and ORD_ID = @ORD_ID1
and TYPE= @TYPE1
and SER=@SER1
and ORD_DATE = @DATE_WRITE1
and ITM_ID = @SANF_ID1
*/
UPDATE DM_ORDER_CALC
SET REC_ID = @last_in_no1 ,
REC_DATE = @last_in_date1 ,
PRICE = isnull(@PRICE1,0) ,
SUP_NAME = @SUP_NAME1 ,
CURRENCY = 1 ,
CALC_TYPE = 3
WHERE FACT_ID = @FACT1
and ORD_ID = @ORD_ID1
and TYPE= @TYPE1
and SER=@SER1
and ORD_DATE = @DATE_WRITE1
and REC_DATE < isnull(@last_in_date1,REC_DATE)
and ITM_ID = @SANF_ID1

SELECT @SUP_NAME1=''
SELECT @PRICE1 =0
SELECT @QTY1 =0
SELECT @VAL1 =0
SELECT @last_in_no1 = ''
SELECT @last_in_date1 = NULL
-- SELECT @last_in_date1 = CAST(NULL AS datetime)
SELECT CONS1=0
END

FETCH CUR_ORDER_ITEMS1 INTO @FACT1, @ORD_ID1 , @DATE_WRITE1 , @TYPE1 , @SER1 ,


@SANF_ID1
END
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
close CUR_ORDER_ITEMS1
deallocate cursor CUR_ORDER_ITEMS1
return 90
END

--===============================================================================

--===============================================================================
DECLARE CUR_ORDER_ITEMS2 CURSOR
FOR SELECT FACT_ID, ORD_ID,ORD_DATE,TYPE, SER,ITM_ID
FROM DM_ORDER_CALC d
WHERE d.ORD_DATE = @DATE_EDIT AND TYPE =@TYP AND FACT_ID= @FACT_ID

AND ORD_ID BETWEEN @F_ID AND @E_ID


--ORDER BY d.FACT_ID , d.ITM_ID , t.tran_date , t.page_no , t.line_no

FOR READ ONLY

DECLARE
@FACT2 DEC(2,0),

@ORD_ID2 DEC(8,2),

@TYPE2 CHAR(4),

@SER2 DEC(2,0),

@DATE_WRITE2 DATETIME ,

@SANF_ID2 CHAR(9) ,

@SUP_NAME2 VARCHAR(100),

@PRICE2 DEC(13,4) ,

@QTY2 DEC(13,4) ,

@VAL2 DEC(13,4) ,
@INCOME55 DEC(13,4) ,
@INCOME66 DEC(13,4) ,
@INCOME77 DEC(13,4) ,
@last_in_no2 NUMERIC(8) ,
@last_sup_id2 NUMERIC(8) ,
@last_in_date2 datetime ,
@trn_date2 datetime

OPEN CUR_ORDER_ITEMS2
FETCH CUR_ORDER_ITEMS2 INTO @FACT2, @ORD_ID2 , @DATE_WRITE2 , @TYPE2 , @SER2 ,
@SANF_ID2

WHILE @@SQLSTATUS !=2


BEGIN
SELECT @SUP_NAME2=''
SELECT @PRICE2 =0
SELECT @last_sup_id2 =0
SELECT @QTY2 =0
SELECT @VAL2 =0
SELECT @last_in_no2 = 0
SELECT @last_in_date2 = NULL
SELECT CONS2=0
IF EXISTS (SELECT 1 from STKS_ITM_TRAN t , stores_save s

WHERE t.ITM_ID = @SANF_ID2


AND t.FACT_ID = @FACT2
AND t.STOR_NO = s.store_no
AND kind_code = 1 --AND (local_code=@LOCALE_CODE)

AND ITM_QTY > 0


AND TRAN_CODE = 1
AND isnull(UPDATE_FLAG,0) =1 )

BEGIN

SELECT @last_in_date2 = isnull((SELECT max(isnull(REC_DATE,null))


FROM STKS_ITM_TRAN t , stores_save s
WHERE TRAN_CODE = 1 AND
isnull(UPDATE_FLAG,0) =1
AND ( t.STOR_NO = s.store_no) AND
( kind_code = 1)
AND t.FACT_ID = @FACT2
AND TRAN_DATE between @DATE_STRT and
getdate()
--AND tran_date <= getdate()

AND t.ITM_ID = @SANF_ID2


AND isnull(REC_DATE,null)<=
getdate() ),null)
-- SELECT @last_in_no1 = isnull((SELECT max(isnull(suppl_no,'0')) FROM
transactions t , stores_save s
SELECT @INCOME55=0
SELECT @INCOME55= isnull((select sum(ITM_QTY) FROM STKS_ITM_TRAN t ,
stores_save s
WHERE TRAN_CODE = 1 AND
isnull(UPDATE_FLAG,0) =1
AND ( t.STOR_NO = s.store_no) AND
( kind_code = 1)
AND t.FACT_ID = @FACT2 --AND TRAN_DATE <=
getdate()
AND TRAN_DATE between
@DATE_STRT and getdate()
AND t.ITM_ID = @SANF_ID2 ),0)

SELECT @INCOME66=0
SELECT @INCOME66= isnull((select sum(ITM_QTY) FROM STKS_ITM_TRAN t ,
stores_save s
WHERE TRAN_CODE = 3 AND
isnull(UPDATE_FLAG,0) =1
AND ( t.STOR_NO = s.store_no) AND
( kind_code = 1)
AND t.FACT_ID = @FACT2 --AND TRAN_DATE <=
getdate()
AND TRAN_DATE between
@DATE_STRT and getdate()
AND t.ITM_ID = @SANF_ID2 ),0)

SELECT @last_in_no2 = isnull((SELECT isnull(REC_NO,0) FROM


STKS_ITM_TRAN t , stores_save s
WHERE TRAN_CODE = 1 AND
isnull(UPDATE_FLAG,0) =1
AND ( t.STOR_NO = s.store_no) AND
( kind_code = 1)
AND t.FACT_ID = @FACT2 AND TRAN_DATE <=
getdate()
AND t.ITM_ID = @SANF_ID2
AND t.REC_DATE=@last_in_date2),0)

SELECT @last_sup_id2 = isnull((SELECT isnull(SUP_ID,0) FROM


STKS_ITM_TRAN t , stores_save s
WHERE TRAN_CODE = 1 AND
isnull(UPDATE_FLAG,0) =1
AND ( t.STOR_NO = s.store_no) AND
( kind_code = 1)
AND t.FACT_ID = @FACT2 AND TRAN_DATE <=
getdate()
AND t.ITM_ID = @SANF_ID2
AND t.REC_DATE=@last_in_date2),0)

-- SELECT @SUP_NAME1= ' Not Found 2'

SELECT @SUP_NAME2= isnull((SELECT isnull(IMP_NAME,null) FROM


SCM_IMPORTER
WHERE IMP_NO = @last_sup_id2),null)

SELECT @PRICE2= 0
SELECT @PRICE2= isnull(round((isnull(ITM_VAL,0) /
isnull(ITM_QTY,0) ),2),0)
FROM STKS_ITM_TRAN t , stores_save s
WHERE TRAN_CODE = 1 AND isnull(UPDATE_FLAG,0)
=1
AND ( t.STOR_NO = s.store_no) AND ( kind_code = 1)
AND t.FACT_ID = @FACT2 --AND TRAN_DATE <= getdate()
AND TRAN_DATE between @DATE_STRT and getdate()

AND t.ITM_ID = @SANF_ID2


AND t.REC_DATE=@last_in_date2
AND isnull(ITM_VAL,0) > 0

SELECT @INCOME77 =isnull(@INCOME55,0) - isnull(@INCOME66,0)

-- CHECK IF THE ITEM HAS ANY RECORDS IN TRANSACTIONS TABLE

IF ISNULL(@INCOME77,0) <= 0
BEGIN
SELECT @INCOME77 = 0
END

UPDATE DM_ORDER_CALC
SET CONS1 = ISNULL(CONS1,0) + ISNULL(@INCOME55,0) ,
BALANCE = ISNULL(BALANCE,0) + ISNULL(@INCOME77,0) ,
CURRENCY = 1 ,
CALC_TYPE = 4
WHERE FACT_ID = @FACT2
and ORD_ID = @ORD_ID2
and TYPE= @TYPE2
and SER=@SER2
and ORD_DATE = @DATE_WRITE2
and ITM_ID = @SANF_ID2

UPDATE DM_ORDER_CALC
SET REC_ID = CONVERT(CHAR(8),@last_in_no2) ,
REC_DATE = @last_in_date2 ,
PRICE = isnull(@PRICE2,0) ,
SUP_NAME = @SUP_NAME2 ,
CURRENCY = 1 ,
CALC_TYPE = 4
WHERE FACT_ID = @FACT2
and ORD_ID = @ORD_ID2
and TYPE= @TYPE2
and SER=@SER2
and ORD_DATE = @DATE_WRITE2
and REC_DATE < isnull(@last_in_date2,REC_DATE)
and ITM_ID = @SANF_ID2

SELECT @SUP_NAME2=''
SELECT @PRICE2 =0
SELECT @QTY2 =0
SELECT @VAL2 =0
SELECT @last_in_no2 = 0
SELECT @last_in_date2 = NULL
SELECT CONS2=0
END

FETCH CUR_ORDER_ITEMS2 INTO @FACT2, @ORD_ID2 , @DATE_WRITE2 , @TYPE2 , @SER2 ,


@SANF_ID2
END
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
close CUR_ORDER_ITEMS2
deallocate cursor CUR_ORDER_ITEMS2
return 80
END

--===============================================================================

IF @@ERROR =0
COMMIT
ELSE
BEGIN
ROLLBACK
RAISERROR 200013 'TRY AGAIN'
END

CLOSE CUR_ORDER_ITEMS

DEALLOCATE CUR_ORDER_ITEMS

END
go

You might also like