Untitled

 avatar
unknown
plain_text
5 months ago
127 kB
1
Indexable
--IF NOT EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD')
--BEGIN
--	CREATE DATABASE RETAIL_CLOUD
--END

USE RETAIL_CLOUD

IF NOT EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'POS_DOWNLOAD')
BEGIN
	CREATE TABLE POS_DOWNLOAD 
	(
		CLOUD_DOCNUMBR VARCHAR(100),
		RC VARCHAR(10),
		RM VARCHAR(500),
		POS_DOCNUMBR VARCHAR(100),
		StoreCode VARCHAR(100),
		Businessday VARCHAR(100),
		POSID VARCHAR(100),
		SHIFTID VARCHAR(100),
		[CRUSRID] [varchar](18) NOT NULL,
		[CREATDT] [datetime] NOT NULL,
		[MDFUSRID] [varchar](18) NOT NULL,
		[MODIFDT] [datetime] NOT NULL,
		primary key(CLOUD_DOCNUMBR)
	)
	CREATE INDEX POS_DOWNLOAD_idx1 ON POS_DOWNLOAD(StoreCode,Businessday,POSID,SHIFTID)
	CREATE INDEX POS_DOWNLOAD_idx2 ON POS_DOWNLOAD(POS_DOCNUMBR)
END
GO


IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_DOWNLOAD_SALES_TRANSACTION')
DROP PROC RETAIL_CLOUD_EY_DOWNLOAD_SALES_TRANSACTION
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_DISPLAY_SALES_MOBILE')
DROP PROC RETAIL_CLOUD_EY_DISPLAY_SALES_MOBILE
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_DISPLAY_SALES_MOBILE_ALL_PER_BATCH')
DROP PROC RETAIL_CLOUD_EY_DISPLAY_SALES_MOBILE_ALL_PER_BATCH
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_UPDATE_QUEUE_NO_SALES_ONLINE')
DROP PROC RETAIL_CLOUD_EY_UPDATE_QUEUE_NO_SALES_ONLINE
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_DISPLAY_SELECTED_SALES_MOBILE')
DROP PROC RETAIL_CLOUD_EY_DISPLAY_SELECTED_SALES_MOBILE
GO




CREATE PROC RETAIL_CLOUD_EY_DISPLAY_SELECTED_SALES_MOBILE
@POS_DOCNUMBR VARCHAR(100)
as
set nocount on
	SELECT order_id,TrOrderH.creatdt as creatdt,SUBSTRING(CONVERT(VARCHAR,pick_up),1,5) as pick_up,is_manual_finish
	FROM TrOrderH INNER JOIN POS_DOWNLOAD ON TrOrderH.order_id = POS_DOWNLOAD.CLOUD_DOCNUMBR
	WHERE POS_DOCNUMBR = @POS_DOCNUMBR
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_UPDATE_QUEUE_NO_SALES_ONLINE
@CLOUD_DOCNUMBR VARCHAR(100),
@QUEUENO VARCHAR(100)
as
set nocount on
	UPDATE TrOrderH SET queue_no = @QUEUENO WHERE order_id = @CLOUD_DOCNUMBR
set nocount off
GO


CREATE PROC RETAIL_CLOUD_EY_DISPLAY_SALES_MOBILE_ALL_PER_BATCH
@StoreCode VARCHAR(100),
@POSID VARCHAR(100),
@SHIFTID VARCHAR(100),
@Businessday VARCHAR(100)
as
set nocount on
	SELECT CLOUD_DOCNUMBR,RC,RM,POS_DOCNUMBR,StoreCode,Businessday,POSID,SHIFTID  FROM
	(
		SELECT CLOUD_DOCNUMBR,RC,RM,POS_DOCNUMBR,StoreCode,Businessday,POSID,SHIFTID 
		FROM POS_DOWNLOAD
		WHERE StoreCode = @StoreCode AND Businessday = @Businessday
		AND POSID = @POSID	AND SHIFTID = @SHIFTID 
		UNION
		SELECT order_id,posstat,posmsg,POSReceipt,StoreCode,Businessday,POSID,SHIFTID 
		FROM TrSMUOrderH
		WHERE StoreCode = @StoreCode AND Businessday = @Businessday
		AND POSID = @POSID	AND SHIFTID = @SHIFTID 
		AND posstat = 0 AND posmsg = 'SUCCESS'
		UNION
		SELECT order_id,LastDownloadRC,LastDownloadRM,POS_DOCNUMBR,StoreCode,Businessday,POSID,SHIFTID 
		FROM SALEOR_DOWNLOAD
		WHERE StoreCode = @StoreCode AND Businessday = @Businessday
		AND POSID = @POSID	AND SHIFTID = @SHIFTID 
		AND IsDownloadToPOS = 0 AND LastDownloadRC = '200'
	)X
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_DISPLAY_SALES_MOBILE
@StoreCode VARCHAR(100)
as
set nocount on
	SELECT TOP 1 order_id,creatdt,pick_up,is_manual_finish,transtype
	FROM
	(
		SELECT order_id,TrOrderH.creatdt as creatdt,SUBSTRING(CONVERT(VARCHAR,pick_up),1,5) as pick_up,is_manual_finish,transtype
		FROM TrOrderH 
		LEFT OUTER JOIN POS_DOWNLOAD ON TrOrderH.Order_id = POS_DOWNLOAD.CLOUD_DOCNUMBR
		WHERE CLOUD_DOCNUMBR IS NULL
		AND ISNULL(posstat,0) = 0
		AND transtype = 0
		AND SUBSTRING(CONVERT(VARCHAR,GETDATE(),108),1,5) BETWEEN 
		SUBSTRING(CONVERT(VARCHAR,DATEADD(MINUTE,-15,pick_up)),1,5) AND
		SUBSTRING(CONVERT(VARCHAR,DATEADD(MINUTE,15,pick_up)),1,5)
		AND Outlet_Id = @StoreCode
		AND CONVERT(VARCHAR,TrOrderH.creatdt,112) = CONVERT(VARCHAR,GETDATE(),112)
		UNION
		SELECT order_id,TrOrderH.creatdt as creatdt,SUBSTRING(CONVERT(VARCHAR,pick_up),1,5) as pick_up,is_manual_finish,transtype FROM TrOrderH 
		LEFT OUTER JOIN POS_DOWNLOAD ON TrOrderH.Order_id = POS_DOWNLOAD.CLOUD_DOCNUMBR
		WHERE CLOUD_DOCNUMBR IS NULL
		AND ISNULL(posstat,0) = 0
		AND transtype = 1
		AND Outlet_Id = @StoreCode
		UNION
		SELECT order_id,TrOrderH.creatdt as creatdt,SUBSTRING(CONVERT(VARCHAR,pick_up),1,5) as pick_up,is_manual_finish,transtype
		FROM TrOrderH 
		LEFT OUTER JOIN POS_DOWNLOAD ON TrOrderH.Order_id = POS_DOWNLOAD.CLOUD_DOCNUMBR
		WHERE CLOUD_DOCNUMBR IS NULL
		AND ISNULL(posstat,0) = 0
		AND transtype = 0
		AND Outlet_Id = @StoreCode
		AND CONVERT(VARCHAR,TrOrderH.creatdt,112) <> CONVERT(VARCHAR,GETDATE(),112)
		UNION
		SELECT order_id,TrOrderH.creatdt as creatdt,SUBSTRING(CONVERT(VARCHAR,pick_up),1,5) as pick_up,is_manual_finish,transtype
		FROM TrOrderH 
		LEFT OUTER JOIN POS_DOWNLOAD ON TrOrderH.Order_id = POS_DOWNLOAD.CLOUD_DOCNUMBR
		WHERE CLOUD_DOCNUMBR IS NULL
		AND ISNULL(posstat,0) = 0
		AND transtype = 0
		AND Outlet_Id = @StoreCode
		AND CONVERT(VARCHAR,TrOrderH.creatdt,112) = CONVERT(VARCHAR,GETDATE(),112)
		AND SUBSTRING(CONVERT(VARCHAR,GETDATE(),108),1,5) >= SUBSTRING(CONVERT(VARCHAR,pick_up),1,5)
	)SALES_ONLINE
	ORDER BY creatdt ASC
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_DOWNLOAD_SALES_TRANSACTION
@COMPUTERIP VARCHAR(100),
@StoreCode VARCHAR(100),
@POSID VARCHAR(100),
@SHIFTID VARCHAR(100),
@Businessday VARCHAR(100),
@CLOUD_DOCNUMBR VARCHAR(100),
@SYS_USR VARCHAR(100),
@LSMEMBERSHIP varchar(100),
@COMPANYID varchar(100),
@COMPANYPCID varchar(100)
as
set nocount on
BEGIN TRY
	IF EXISTS (SELECT '' FROM POS_DOWNLOAD WHERE CLOUD_DOCNUMBR = @CLOUD_DOCNUMBR)
	BEGIN
		UPDATE TrOrderH SET posstat = 1, posmsg = 'Sales is already downloaded.'
		WHERE order_id = @CLOUD_DOCNUMBR
		RAISERROR ('Sales is already downloaded.',16,1)
	END

	DECLARE @POSID_ONLINE AS VARCHAR(100) = ''
	SET @POSID_ONLINE = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'POS_ID_ONLINE')
	SET @POSID_ONLINE = ISNULL(@POSID_ONLINE,'')
	IF @POSID <> @POSID_ONLINE
	BEGIN
		RAISERROR ('POS ID Online is invalid.',16,1)
	END

	IF EXISTS (SELECT '' FROM TrOrderD WHERE order_id = @CLOUD_DOCNUMBR AND article
				NOT IN (SELECT ItemCode FROM RETAIL_MASTER.dbo.MItem))
	BEGIN
		UPDATE TrOrderH SET posstat = 1, posmsg = 'Item is not registered.'
		WHERE order_id = @CLOUD_DOCNUMBR
		RAISERROR ('Item is not registered.',16,1)
	END

	BEGIN TRY
		BEGIN TRAN
			DECLARE @MSG_ERR VARCHAR(8000) = ''
			DECLARE @SALES_TAX as decimal(19,5)=0
			SET @SALES_TAX = ISNULL((SELECT CONVERT(float,SETUPVALUE)+1 FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'SALES_TAX'),0)

			DECLARE @order_num as int, @article as varchar(100), @qty as decimal(17,5)=0, @price as decimal(19,5) = 0, @notes as varchar(500)='',@disc as decimal(19,5)=0,@promocode as varchar(100) = ''

			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesTenderT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesTenderTT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesAdditionalT WHERE COMPUTERIP = @COMPUTERIP

			DECLARE CSR_DOWNLOAD CURSOR FOR 
							SELECT order_num,article,qty,price,notes,disc,promocode FROM TrOrderD WHERE Order_id = @CLOUD_DOCNUMBR
			OPEN CSR_DOWNLOAD
			FETCH NEXT FROM CSR_DOWNLOAD INTO @order_num,@article,@qty,@price,@notes,@disc,@promocode
			WHILE @@FETCH_STATUS = 0
			BEGIN
				DECLARE
					@Barcode varchar(100),
					@ItemDescriptionLong varchar(500),
					@ItemDescriptionShort varchar(50),
					@ItemType varchar(20),
					@TaxCode varchar(20),
					@OpenPriceFlg bit,
					@ItemValue as decimal(19,5)=0,
					@ReturnAble as bit,
					@MerchCat varchar(50),
					@MerchCatDesc varchar(100),
					@Category varchar(50),
					@CategoryDesc varchar(100),
					@Department varchar(50),
					@DepartmentDesc varchar(100),
					@Division varchar(50),
					@DivisionDesc varchar(100),
					@Tax decimal(19,5) = 0,
					@Subtotal decimal(19,5) = 0,
					@DPP decimal(19,5) = 0,
					@Total decimal(19,5) = 0
				
				SELECT TOP 1 @Barcode = Barcode, @ItemDescriptionLong = ItemDescriptionLong,  
				@ItemDescriptionShort = ItemDescriptionShort, @ItemType = ItemType,
				@TaxCode = TaxCode, @OpenPriceFlg = OpenPriceFlg,
				@ReturnAble = ReturnAble,
				@MerchCat = MItem.MerchCat, @MerchCatDesc = MerchCatDesc,
				@Category = Category, @CategoryDesc = CategoryDesc,
				@Department = Department, @DepartmentDesc = DepartmentDesc, 
				@Division = Division, @DivisionDesc = DivisionDesc
				FROM RETAIL_MASTER.dbo.MItem 
				LEFT JOIN RETAIL_MASTER.dbo.MMerchandiseCategory ON MItem.MerchCat = MMerchandiseCategory.MerchCat
				where ItemCode = @article
				AND TaxCode <> ''

				IF @Barcode = ''
				BEGIN
					SET @MSG_ERR = @article + 'is not registered.'
					RAISERROR (@MSG_ERR,16,1)
				END

				SET @Subtotal = @qty * (@price - @disc)
				SET @Total = @Subtotal
				IF @TaxCode <> 0
				BEGIN
					SET @Tax = ROUND(@Subtotal - (@Subtotal/@SALES_TAX),0)
				END
				SET @DPP = @Subtotal - @Tax

				INSERT INTO RETAIL_TRANSACTION.dbo.TrSalesT
				(StoreCode,BusinessDay,POSID,SHIFTID,COMPUTERIP,LNITMSEQ,Barcode,ItemCode,ItemDescriptionLong,ItemDescriptionShort,ItemType,TaxCode,MerchCat,MerchCatDesc,
				Category,CategoryDesc,Department,DepartmentDesc,Division,DivisionDesc,OpenPriceFlg,UnitPrice,Qty,Disc,Subtotal,DPP,Tax,Total,QtySales,SalesDisc,SalesSubtotal,SalesDPP,SalesTax,SalesTotal,QtyReturned,ReturnedDisc,ReturnedSubtotal,ReturnedDPP,ReturnedTax,ReturnedTotal,ItemValue,CRUSRID,CREATDT,MDFUSRID,MODIFDT,ReturnAble,PromoCode)
				VALUES 
				(@StoreCode,@BusinessDay,@POSID,@SHIFTID,@COMPUTERIP,@order_num,@Barcode,
				@article,@ItemDescriptionLong,@ItemDescriptionShort,@ItemType,@TaxCode,@MerchCat,@MerchCatDesc,
				@Category,@CategoryDesc,@Department,@DepartmentDesc,@Division,@DivisionDesc,@OpenPriceFlg,@price,@qty,@disc,@Subtotal,@DPP,@Tax,@Total,@qty,@disc,@Subtotal,@DPP,@Tax,@Total,0,0,0,0,0,0,@ItemValue,@SYS_USR,GETDATE(),'','1900-01-01 00:00:00.000',@ReturnAble,@promocode)

				INSERT INTO RETAIL_TRANSACTION.dbo.TrSalesAdditionalT(COMPUTERIP,LNITMSEQ,USERDEFINEID,USERDEFINEVALUE,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
				VALUES 
				(@COMPUTERIP,@order_num,@order_num,@notes,@SYS_USR,GETDATE(),'','1900-01-01 00:00:00.000')


				FETCH NEXT FROM CSR_DOWNLOAD INTO @order_num,@article,@qty,@Price,@notes,@disc,@promocode
			END
			CLOSE CSR_DOWNLOAD
			DEALLOCATE CSR_DOWNLOAD
		COMMIT
	END TRY
	BEGIN CATCH
		ROLLBACK
		CLOSE CSR_DOWNLOAD
		DEALLOCATE CSR_DOWNLOAD
		DECLARE @ERROR AS VARCHAR(MAX)
		SET @ERROR = ERROR_MESSAGE()
		RAISERROR(@ERROR,16,1)
	END CATCH

	DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesPromoT WHERE COMPUTERIP = @COMPUTERIP
	INSERT INTO RETAIL_TRANSACTION.dbo.TrSalesPromoT(COMPUTERIP,PromoCode,LimitQty)
	SELECT @COMPUTERIP,PromoCode,Qty from RETAIL_CLOUD.dbo.TrOrderPromo
	WHERE Order_id = @CLOUD_DOCNUMBR
	

	DECLARE @paymentType varchar(100) = '',@PaidAmount DECIMAL(19,5) = 0, @ReferenceNo varchar(100) = ''
	SELECT @paymentType = 
		CASE 
		WHEN paymentType = 'GOPAY' THEN 
			'GOPAY' 
		WHEN paymentType = 'OVO' THEN 
			'OVO P2P' 
		ELSE 
			paymentType 
		END, @PaidAmount = total_amount, @ReferenceNo = referenceNumber FROM TrOrderH WHERE Order_id = @CLOUD_DOCNUMBR
	IF @paymentType = ''
	BEGIN
		SET @MSG_ERR = 'Payment Type is blank'
		RAISERROR (@MSG_ERR,16,1)
	END
		
	EXEC RETAIL_TRANSACTION.dbo.TRX_EY_SAVE_SALES_TRANSACTION_TENDER_TEMP 
	@StoreCode, @BusinessDay, @POSID, @SHIFTID, @COMPUTERIP, @paymentType, @PaidAmount, @PaidAmount, @ReferenceNo, @SYS_USR

	DECLARE @DPP_TOTAL as decimal(19,5) = 0, @Items_TOTAL as int = 0, @Tax_TOTAL as decimal(19,5) = 0
	SET @DPP_TOTAL = (SELECT ISNULL(SUM(DPP),0) FROM RETAIL_TRANSACTION.dbo.TrSalesT
	WHERE COMPUTERIP = @COMPUTERIP
	AND TaxCode <> '0'
	AND Barcode NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItemDonation))
	SET @DPP_TOTAL = ISNULL(@DPP_TOTAL,0) 

	SELECT @Items_TOTAL = ISNULL(ItemCount,0),
	@Tax_TOTAL = ISNULL(Tax,0)
	FROM
	(

		SELECT ISNULL(SUM(Total),0) as Total,@DPP as DPP,ISNULL(SUM(Tax),0) as Tax,ISNULL(SUM(Subtotal),0) as Subtotal FROM RETAIL_TRANSACTION.dbo.TrSalesT
		WHERE COMPUTERIP = @COMPUTERIP
	)TOTAL
	LEFT JOIN
	(
		SELECT CEILING(ISNULL(SUM(Qty),0)) as ItemCount
		FROM RETAIL_TRANSACTION.dbo.TrSalesT WHERE COMPUTERIP = @COMPUTERIP 
		AND Barcode NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItemReceiptDisallow)
	)ITEM_COUNT ON 1=1

	EXEC RETAIL_TRANSACTION.dbo.TRX_EY_POST_SALES_TRANSACTION
	@StoreCode,@BusinessDay,@POSID,@SHIFTID,@COMPUTERIP,@PaidAmount,@DPP_TOTAL,
	@Tax_TOTAL,@PaidAmount,@Items_TOTAL,@PaidAmount,0,@PaidAmount,
	@CLOUD_DOCNUMBR,'','',@SYS_USR,'','SALES TRANSACTION','',@LSMEMBERSHIP,@COMPANYID,@COMPANYPCID,
	0,0,0

	DECLARE @DOCNUMBR_POST VARCHAR(100) = (SELECT TOP 1 DOCNUMBR FROM RETAIL_TRANSACTION.dbo.TrSalesHH WHERE ORIDOCNUMBR = @CLOUD_DOCNUMBR ORDER BY CREATDT DESC)
	
	EXEC RETAIL_TRANSACTION.dbo.TRX_EY_POST_AGE_GENDER_CUSTOMER
	@StoreCode,
	@BusinessDay,
	@POSID,
	@SHIFTID,
	@SYS_USR,
	@DOCNUMBR_POST,
	'SALES TRANSACTION',
	'FamilyMart ID Apps'
	
	UPDATE RETAIL_TRANSACTION.dbo.TrKitchenHH SET TRXSOURCE = 'M' WHERE DOCNUMBR = @DOCNUMBR_POST

	IF NOT EXISTS (SELECT '' FROM POS_DOWNLOAD WHERE CLOUD_DOCNUMBR = @CLOUD_DOCNUMBR)
	BEGIN
		INSERT INTO POS_DOWNLOAD(CLOUD_DOCNUMBR,RC,RM,POS_DOCNUMBR,StoreCode,Businessday,POSID,SHIFTID,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		VALUES (@CLOUD_DOCNUMBR,'0','SUCCESS',@DOCNUMBR_POST,@StoreCode,@Businessday,@POSID,@SHIFTID,@SYS_USR,GETDATE(),'','1900-01-01')

		UPDATE TrOrderH SET posstat = 0, posmsg = 'SUCCESS.' WHERE Order_Id = @CLOUD_DOCNUMBR
	END
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
GO

-----------------------------------------------------------------------------------------------------------
IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrOrderPromoT')
BEGIN
	CREATE TABLE TrOrderPromoT
	(
		ipaddress varchar(50),
		order_id varchar(100),
		promocode varchar(50),
		promodtl varchar(8000),
		qty int,
		primary key(ipaddress,order_id,promocode)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrOrderPromo')
BEGIN
	CREATE TABLE TrOrderPromo
	(
		order_id varchar(100),
		promocode varchar(50),
		promodtl varchar(8000),
		qty int,
		primary key(order_id,promocode)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrOrderH')
BEGIN
	CREATE TABLE TrOrderH
	(
		order_id varchar(100),
		email varchar(100),
		outlet_id varchar(100),
		creatdt datetime,
		total_amount decimal(19,5),
		pick_up time,
		paymentType varchar(100),
		referenceNumber varchar(100),
		queue_no varchar(100),
		is_sent varchar(1),
		is_manual_finish int,
		transtype int,
		posstat int,
		posmsg varchar(8000)
		primary key(order_id)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrOrderD')
BEGIN
	CREATE TABLE TrOrderD
	(
		order_id varchar(100),
		order_num varchar(100),
		article varchar(100),
		qty decimal(19,5),
		price decimal(19,5),
		disc decimal(19,5),
		promocode varchar(50),
		promodtl varchar(8000),
		notes varchar(8000),
		primary key(order_id,order_num)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrOrderHT')
BEGIN
	CREATE TABLE TrOrderHT
	(
		ipaddress varchar(50),
		order_id varchar(100),
		email varchar(100),
		outlet_id varchar(100),
		creatdt datetime,
		total_amount decimal(19,5),
		pick_up time,
		paymentType varchar(100),
		referenceNumber varchar(100),
		queue_no varchar(100),
		is_sent varchar(1),
		is_manual_finish int,
		transtype int,
		posstat int,
		posmsg varchar(8000)
		primary key(ipaddress,order_id)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrOrderDT')
BEGIN
	CREATE TABLE TrOrderDT
	(
		ipaddress varchar(50),
		order_id varchar(100),
		order_num varchar(100),
		article varchar(100),
		qty decimal(19,5),
		price decimal(19,5),
		disc decimal(19,5),
		promocode varchar(50),
		promodtl varchar(8000),
		notes varchar(8000),
		primary key(ipaddress,order_id,order_num)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSMUOrderH')
BEGIN
	CREATE TABLE TrSMUOrderH
	(
		order_id varchar(100),
		outlet_id varchar(100),
		order_date datetime,
		total_amount decimal(19,5),
		pick_up datetime,
		queue_no varchar(100),
		POSReceipt varchar(100),
		StoreCode VARCHAR(100),
		Businessday VARCHAR(100),
		POSID VARCHAR(100),
		SHIFTID VARCHAR(100),
		is_sent varchar(1),
		order_type varchar(10),
		[user_id] varchar(100),
		posstat int,
		posmsg varchar(8000),
		order_status int,
		order_msg varchar(200),
		order_sts_DT datetime,
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key(order_id)
	)

	CREATE INDEX TrSMUOrderH_idx1 ON TrSMUOrderH(creatdt)
	CREATE INDEX TrSMUOrderH_idx2 ON TrSMUOrderH([user_id])
	CREATE INDEX TrSMUOrderH_idx3 ON TrSMUOrderH(POSReceipt)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSMUOrderD')
BEGIN
	CREATE TABLE TrSMUOrderD
	(
		order_id varchar(100),
		material_id varchar(100),
		material_desc varchar(200),
		ean11 varchar(100),
		qty_order_in_base decimal(19,5),
		gross_price decimal(19,5),
		disc_price decimal(19,5),
		net_price decimal(19,5),
		Total decimal(19,5),
		promol_no varchar(100),
		additional_notes varchar(8000),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key(order_id,material_id,promol_no)
	)
	CREATE INDEX TrSMUOrderD_idx1 ON TrSMUOrderD(material_id)
	CREATE INDEX TrSMUOrderD_idx2 ON TrSMUOrderD(promol_no)
	CREATE INDEX TrSMUOrderD_idx3 ON TrSMUOrderD(ean11)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSMUOrderP')
BEGIN
	CREATE TABLE TrSMUOrderP
	(
		order_id varchar(100),
		payment_type varchar(100),
		reference_no varchar(200),
		amount decimal(19,5),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key(order_id,payment_type)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSMUOrderHT')
BEGIN
	CREATE TABLE TrSMUOrderHT
	(
		COMPUTERIP VARCHAR(100),
		order_id varchar(100),
		outlet_id varchar(100),
		order_date datetime,
		total_amount decimal(19,5),
		pick_up datetime,
		queue_no varchar(100),
		POSReceipt varchar(100),
		is_sent varchar(1),
		order_type varchar(10),
		[user_id] varchar(100),
		posstat int,
		posmsg varchar(8000),
		order_status int,
		order_msg varchar(200),
		order_sts_DT datetime,
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key(COMPUTERIP,order_id)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSMUOrderDT')
BEGIN
	CREATE TABLE TrSMUOrderDT
	(
		COMPUTERIP VARCHAR(100),
		order_id varchar(100),
		material_id varchar(100),
		material_desc varchar(200),
		ean11 varchar(100),
		qty_order_in_base decimal(19,5),
		gross_price decimal(19,5),
		disc_price decimal(19,5),
		net_price decimal(19,5),
		Total decimal(19,5),
		promol_no varchar(100),
		additional_notes varchar(8000),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key(COMPUTERIP,order_id,material_id,promol_no)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSMUOrderPT')
BEGIN
	CREATE TABLE TrSMUOrderPT
	(
		COMPUTERIP VARCHAR(100),
		order_id varchar(100),
		payment_type varchar(100),
		reference_no varchar(200),
		amount decimal(19,5),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key(COMPUTERIP,order_id,payment_type)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSaleorHT')
BEGIN
	CREATE TABLE TrSaleorHT
	(
		COMPUTERIP VARCHAR(100),
		id varchar(100),
		order_id varchar(100),
		outlet_id varchar(100),
		point_amt DECIMAL(19,5),
		point_reference varchar(100),
		[status] varchar(100),
		channel varchar(100),
		local_id varchar(100),
		local_name varchar(100),
		ordered_at datetime,
		payment_method varchar(100),
		payment_status varchar(100),
		total_price DECIMAL(19,5),
		shipping_price DECIMAL(19,5),
		discount_shipping DECIMAL(19,5),
		channel_rebate DECIMAL(19,5),
		discount_amount DECIMAL(19,5),
		customer_info_id varchar(100),
		customer_info_name varchar(100),
		customer_info_email varchar(100),
		customer_info_since datetime,
		customer_address_address_1 varchar(500),
		customer_address_address_2 varchar(500),
		customer_address_city varchar(100),
		customer_address_country varchar(100),
		customer_address_name varchar(100),
		customer_address_phone varchar(100),
		customer_address_postal_code varchar(100),
		customer_address_province varchar(100),
		customer_address_province_code varchar(100),
		customer_address_sub_district varchar(100),
		customer_address_district varchar(100),
		customer_address_coordinate varchar(100),
		order_status varchar(100),
		discount_type varchar(100),
		order_type varchar(100),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		PRIMARY KEY (COMPUTERIP,order_id)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSaleorDT')
BEGIN
	CREATE TABLE TrSaleorDT
	(
		COMPUTERIP VARCHAR(100),
		id varchar(100),
		order_id varchar(100),
		local_id varchar(100),
		order_num int,
		variant_sku varchar(100),
		qty DECIMAL(17,5),
		price DECIMAL(19,5),
		sale_price DECIMAL(19,5),
		total_price DECIMAL(19,5),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key (COMPUTERIP,order_id,order_num) 
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSaleorHW')
BEGIN
	CREATE TABLE TrSaleorHW
	(
		id varchar(100),
		order_id varchar(100),
		outlet_id varchar(100),
		point_amt DECIMAL(19,5),
		point_reference varchar(100),
		[status] varchar(100),
		channel varchar(100),
		local_id varchar(100),
		local_name varchar(100),
		ordered_at datetime,
		payment_method varchar(100),
		payment_status varchar(100),
		total_price DECIMAL(19,5),
		shipping_price DECIMAL(19,5),
		discount_shipping DECIMAL(19,5),
		channel_rebate DECIMAL(19,5),
		discount_amount DECIMAL(19,5),
		customer_info_id varchar(100),
		customer_info_name varchar(100),
		customer_info_email varchar(100),
		customer_info_since datetime,
		customer_address_address_1 varchar(500),
		customer_address_address_2 varchar(500),
		customer_address_city varchar(100),
		customer_address_country varchar(100),
		customer_address_name varchar(100),
		customer_address_phone varchar(100),
		customer_address_postal_code varchar(100),
		customer_address_province varchar(100),
		customer_address_province_code varchar(100),
		customer_address_sub_district varchar(100),
		customer_address_district varchar(100),
		customer_address_coordinate varchar(100),
		order_status varchar(100),
		discount_type varchar(100),
		order_type varchar(100),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		PRIMARY KEY (order_id)
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSaleorDW')
BEGIN
	CREATE TABLE TrSaleorDW
	(
		id varchar(100),
		order_id varchar(100),
		local_id varchar(100),
		order_num int,
		variant_sku varchar(100),
		qty DECIMAL(17,5),
		price DECIMAL(19,5),
		sale_price DECIMAL(19,5),
		total_price DECIMAL(19,5),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key (order_id,order_num) 
	)
END
GO

IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSaleorHH')
BEGIN
	CREATE TABLE TrSaleorHH
	(
		id varchar(100),
		order_id varchar(100),
		outlet_id varchar(100),
		point_amt DECIMAL(19,5),
		point_reference varchar(100),
		[status] varchar(100),
		channel varchar(100),
		local_id varchar(100),
		local_name varchar(100),
		ordered_at datetime,
		payment_method varchar(100),
		payment_status varchar(100),
		total_price DECIMAL(19,5),
		shipping_price DECIMAL(19,5),
		discount_shipping DECIMAL(19,5),
		channel_rebate DECIMAL(19,5),
		discount_amount DECIMAL(19,5),
		customer_info_id varchar(100),
		customer_info_name varchar(100),
		customer_info_email varchar(100),
		customer_info_since datetime,
		customer_address_address_1 varchar(500),
		customer_address_address_2 varchar(500),
		customer_address_city varchar(100),
		customer_address_country varchar(100),
		customer_address_name varchar(100),
		customer_address_phone varchar(100),
		customer_address_postal_code varchar(100),
		customer_address_province varchar(100),
		customer_address_province_code varchar(100),
		customer_address_sub_district varchar(100),
		customer_address_district varchar(100),
		customer_address_coordinate varchar(100),
		order_status varchar(100),
		discount_type varchar(100),
		order_type varchar(100),
		payment_method_POS varchar(100),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		PRIMARY KEY (order_id)
	)
END
GO




IF NOT EXISTS (SELECT '' from sysobjects where name = 'TrSaleorDH')
BEGIN
	CREATE TABLE TrSaleorDH
	(
		id varchar(100),
		order_id varchar(100),
		local_id varchar(100),
		order_num int,
		variant_sku varchar(100),
		qty DECIMAL(17,5),
		price DECIMAL(19,5),
		sale_price DECIMAL(19,5),
		total_price DECIMAL(19,5),
		Price_after_voucher DECIMAL(19,5),
		sale_price_voucher DECIMAL(19,5),
		total_price_after_voucher DECIMAL(19,5),
		CRUSRID varchar(100),
		CREATDT datetime,
		MDFUSRID Varchar(100),
		MODIFDT datetime,
		primary key (order_id,order_num) 
	)
END
GO

IF NOT EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'SALEOR_DOWNLOAD')
BEGIN
	CREATE TABLE SALEOR_DOWNLOAD 
	(
		order_id VARCHAR(100),
		RC VARCHAR(10),
		RM VARCHAR(500),
		POS_DOCNUMBR VARCHAR(100),
		StoreCode VARCHAR(100),
		Businessday VARCHAR(100),
		POSID VARCHAR(100),
		SHIFTID VARCHAR(100),
		IsDownloadToPOS int, --0 berarti sudah didownload, 1 berarti ready di download
		LastDownloadDT datetime, --download time
		LastDownloadRC varchar(100),
		LastDownloadRM varchar(100),
		IsUploadToCloud int, --0 berarti sudah di upload, 1 berarti ready di upload
		LastUploadDT datetime, -- ready to upload time
		LastUploadRC varchar(100), --Upload RC
		LastUploadRM varchar(100), --Upload RM
		LastUploadMSG varchar(100), --Upload Message
		LastUploadRCDT datetime, --Upload time
		[CRUSRID] [varchar](18) NOT NULL,
		[CREATDT] [datetime] NOT NULL,
		[MDFUSRID] [varchar](18) NOT NULL,
		[MODIFDT] [datetime] NOT NULL,
		primary key(order_id)
	)
	CREATE INDEX SALEOR_DOWNLOAD_idx1 ON SALEOR_DOWNLOAD(StoreCode,Businessday,POSID,SHIFTID)
	CREATE INDEX SALEOR_DOWNLOAD_idx2 ON SALEOR_DOWNLOAD(POS_DOCNUMBR)
END
GO

IF NOT EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'SALEOR_ORDER_STATUS_T')
BEGIN
	CREATE TABLE SALEOR_ORDER_STATUS_T 
	(
		COMPUTERIP VARCHAR(100),
		id varchar(100),
		order_id varchar(100),
		local_id varchar(100),
		Order_status VARCHAR(100),
		Order_DT datetime,
		[CRUSRID] [varchar](18) NOT NULL,
		[CREATDT] [datetime] NOT NULL,
		[MDFUSRID] [varchar](18) NOT NULL,
		[MODIFDT] [datetime] NOT NULL,
		primary key(COMPUTERIP,order_id,Order_status)
	)
END
GO


IF NOT EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'SALEOR_ORDER_STATUS')
BEGIN
	CREATE TABLE SALEOR_ORDER_STATUS 
	(
		id varchar(100),
		order_id varchar(100),
		local_id varchar(100),
		Order_status VARCHAR(100),
		Order_DT datetime,
		[CRUSRID] [varchar](18) NOT NULL,
		[CREATDT] [datetime] NOT NULL,
		[MDFUSRID] [varchar](18) NOT NULL,
		[MODIFDT] [datetime] NOT NULL,
		primary key(order_id,Order_status)
	)
END
GO

----------------------------------------PROCEDURES----------------------------------------------------
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_ADD_ORDER_HEADER')
DROP PROC RETAIL_CLOUD_AS_ADD_ORDER_HEADER
GO

CREATE PROC RETAIL_CLOUD_AS_ADD_ORDER_HEADER
@order_id varchar(100),
@email varchar(100),
@outlet_id varchar(100),
@creatdt datetime,
@total_amount decimal(19,5),
@pick_up time,
@paymentType varchar(100),
@referenceNumber varchar(100),
@ipaddress varchar(50),
@im int,
@transtype int
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF NOT EXISTS(SELECT '' FROM TrOrderHT WHERE order_id = @order_id)
			INSERT INTO TrOrderHT (ipaddress,order_id,email,outlet_id,creatdt,total_amount,Pick_up,paymentType,referenceNumber,queue_no,is_sent,is_manual_finish,transtype,posstat,posmsg)
			VALUES (@ipaddress,@order_id,@email,@outlet_id,@creatdt,@total_amount,@pick_up,@paymentType,@referenceNumber,'',0,@im,@transtype,0,'')
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_ADD_ORDER_DETAIL')
DROP PROC RETAIL_CLOUD_AS_ADD_ORDER_DETAIL
GO

CREATE PROC RETAIL_CLOUD_AS_ADD_ORDER_DETAIL
@order_id varchar(100),
@order_num varchar(100),
@article varchar(100),
@qty decimal(19,5),
@price decimal(19,5),
@notes varchar(8000),
@ipaddress varchar(50),
@disc decimal (19,5),
@pc varchar(50),
@pd varchar(8000)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF NOT EXISTS(SELECT '' FROM TrOrderDT WHERE order_id = @order_id AND order_num = @order_num)
			INSERT INTO TrOrderDT (ipaddress,order_id,order_num,article,qty,price,disc,promocode,promodtl,notes)
			VALUES (@ipaddress,@order_id,@order_num,@article,@qty,@price,@disc,@pc,@pd,@notes)
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_ADD_PROMO_DETAIL')
DROP PROC RETAIL_CLOUD_AS_ADD_PROMO_DETAIL
GO

CREATE PROC RETAIL_CLOUD_AS_ADD_PROMO_DETAIL
@ipaddress varchar(50),
@order_id varchar(100),
@pc varchar(50),
@pd varchar(8000),
@qty int
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF NOT EXISTS(SELECT '' FROM TrOrderPromoT WHERE order_id = @order_id AND promocode = @pc)
			INSERT INTO TrOrderPromoT (ipaddress,order_id,promocode,promodtl,qty)
			VALUES (@ipaddress,@order_id,@pc,@pd,@qty)
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_CONFIRM_ORDER')
DROP PROC RETAIL_CLOUD_AS_CONFIRM_ORDER
GO

CREATE PROC RETAIL_CLOUD_AS_CONFIRM_ORDER
@ipaddress varchar(50)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		DECLARE @oi VARCHAR(100)
		DECLARE oi_cursor CURSOR FOR   
			SELECT order_id FROM TrOrderHT WHERE ipaddress = @ipaddress
		OPEN oi_cursor  
		FETCH NEXT FROM oi_cursor INTO @oi  
		WHILE @@FETCH_STATUS = 0  
			BEGIN  
				IF NOT EXISTS ( SELECT '' FROM TrOrderH WHERE order_id = @oi)
					BEGIN
						INSERT INTO TrOrderH (order_id,email,outlet_id,creatdt,total_amount,Pick_up,paymentType,referenceNumber,queue_no,is_sent,is_manual_finish,transtype,posstat,posmsg)
						SELECT order_id,email,outlet_id,creatdt,total_amount,Pick_up,paymentType,referenceNumber,queue_no,is_sent,is_manual_finish,transtype,posstat,posmsg FROM TrOrderHT WHERE ipaddress = @ipaddress AND order_id = @oi
						INSERT INTO TrOrderD (order_id,order_num,article,qty,price,disc,promocode,promodtl,notes)
						SELECT order_id,order_num,article,qty,price,disc,promocode,promodtl,notes FROM TrOrderDT WHERE ipaddress = @ipaddress AND order_id = @oi
						INSERT INTO TrOrderPromo (order_id,promocode,promodtl,qty)
						SELECT order_id,promocode,promodtl,qty FROM TrOrderPromoT WHERE ipaddress = @ipaddress AND order_id = @oi
					END
				FETCH NEXT FROM oi_cursor INTO @oi  
			END  
		CLOSE oi_cursor  
		DEALLOCATE oi_cursor  
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_DELETE_ORDER')
DROP PROC RETAIL_CLOUD_AS_DELETE_ORDER
GO

CREATE PROC RETAIL_CLOUD_AS_DELETE_ORDER
@ipaddress varchar(50)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		DELETE FROM TrOrderHT WHERE ipaddress = @ipaddress
		DELETE FROM TrOrderDT WHERE ipaddress = @ipaddress
		DELETE FROM TrOrderPromoT WHERE ipaddress = @ipaddress
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_SEND_QUEUE')
DROP PROC RETAIL_CLOUD_AS_SEND_QUEUE
GO

CREATE PROC RETAIL_CLOUD_AS_SEND_QUEUE
@order_id VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		--DECLARE @order_id VARCHAR(100)
		--SET @order_id = (SELECT TOP 1 order_id FROM TrOrderH WHERE queue_no IS NOT NULL AND is_sent = '0' ORDER BY creatdt ASC)
		UPDATE TrOrderH SET is_sent = '1' WHERE order_id = @order_id
		--SELECT TOP 1 order_id,queue_no FROM TrOrderH WHERE order_id = @order_id
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_ROLLBACK_ISSENT')
DROP PROC RETAIL_CLOUD_AS_ROLLBACK_ISSENT
GO

CREATE PROC RETAIL_CLOUD_AS_ROLLBACK_ISSENT
@order_id VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		UPDATE TrOrderH SET is_sent = '0' WHERE order_id = @order_id
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_AS_QUEUE_TO_SEND')
DROP PROC RETAIL_CLOUD_AS_QUEUE_TO_SEND
GO

CREATE PROC RETAIL_CLOUD_AS_QUEUE_TO_SEND
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		SELECT TOP 5 order_id,queue_no FROM TrOrderH WHERE queue_no <> '' AND is_sent = '0' ORDER BY creatdt ASC
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

-------------------------------------------------------SMU PROJECT--------------------------------------------------
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_CLEAR_ORDER_TEMP')
DROP PROC RETAIL_CLOUD_EY_SMU_CLEAR_ORDER_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_COPY_ORDER_TEMP_TO_HIST')
DROP PROC RETAIL_CLOUD_EY_SMU_COPY_ORDER_TEMP_TO_HIST
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_SAVE_ORDER_HEADER_TEMP')
DROP PROC RETAIL_CLOUD_EY_SMU_SAVE_ORDER_HEADER_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_SAVE_ORDER_DETAIL_TEMP')
DROP PROC RETAIL_CLOUD_EY_SMU_SAVE_ORDER_DETAIL_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_SAVE_ORDER_PAYMENT_TEMP')
DROP PROC RETAIL_CLOUD_EY_SMU_SAVE_ORDER_PAYMENT_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_TO_SEND')
DROP PROC RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_TO_SEND
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_UPDATE_UNSENT_ORDER')
DROP PROC RETAIL_CLOUD_EY_SMU_UPDATE_UNSENT_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_UPDATE_IS_SENT_ORDER')
DROP PROC RETAIL_CLOUD_EY_SMU_UPDATE_IS_SENT_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_TO_BE_PROCESSED')
DROP PROC RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_TO_BE_PROCESSED
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_EXECUTE_ORDER_TO_POS')
DROP PROC RETAIL_CLOUD_EY_SMU_EXECUTE_ORDER_TO_POS
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_UPDATE_QUEUE_NO_ORDER')
DROP PROC RETAIL_CLOUD_EY_SMU_UPDATE_QUEUE_NO_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_DISPLAY_SELECTED_ORDER')
DROP PROC RETAIL_CLOUD_EY_SMU_DISPLAY_SELECTED_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER')
DROP PROC RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_ALL')
DROP PROC RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_ALL
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_DISPLAY_SELECTED_ORDER_DETAIL')
DROP PROC RETAIL_CLOUD_EY_SMU_DISPLAY_SELECTED_ORDER_DETAIL
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_CHECK_IS_WINGSKITA')
DROP PROC RETAIL_CLOUD_EY_CHECK_IS_WINGSKITA
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_DISPLAY_TRX_UNFINNISHED')
DROP PROC RETAIL_CLOUD_EY_DISPLAY_TRX_UNFINNISHED
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SMU_DISPLAY_INCOMING_ORDER')
DROP PROC RETAIL_CLOUD_EY_SMU_DISPLAY_INCOMING_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_SAVE_HEADER_TEMP')
DROP PROC RETAIL_CLOUD_EY_SALEOR_SAVE_HEADER_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_SAVE_DETAIL_TEMP')
DROP PROC RETAIL_CLOUD_EY_SALEOR_SAVE_DETAIL_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_CLEAR_TEMP')
DROP PROC RETAIL_CLOUD_EY_SALEOR_CLEAR_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_SAVE_WORK_HIST')
DROP PROC RETAIL_CLOUD_EY_SALEOR_SAVE_WORK_HIST
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_SAVE_ORDER_STATUS_TEMP')
DROP PROC RETAIL_CLOUD_EY_SALEOR_SAVE_ORDER_STATUS_TEMP
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_UPDATE_ORDER_CLOUD')
DROP PROC RETAIL_CLOUD_EY_SALEOR_UPDATE_ORDER_CLOUD
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_TO_BE_PROCESSED')
DROP PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_TO_BE_PROCESSED
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_EXECUTE_ORDER_TO_POS')
DROP PROC RETAIL_CLOUD_EY_SALEOR_EXECUTE_ORDER_TO_POS
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_POS')
DROP PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_POS
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_POS_DETAIL')
DROP PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_POS_DETAIL
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_ORI_DETAIL')
DROP PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_ORI_DETAIL
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMIAPPS_GENERATE_ORDER_KITCHEN_JSON')
DROP PROC RETAIL_CLOUD_EY_FAMIAPPS_GENERATE_ORDER_KITCHEN_JSON
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMIAPPS_UPDATE_ORDER_KITCHEN_JSON')
DROP PROC RETAIL_CLOUD_EY_FAMIAPPS_UPDATE_ORDER_KITCHEN_JSON
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMIAPPS_ADD_SUPPLIES_ITEM')
DROP PROC RETAIL_CLOUD_EY_FAMIAPPS_ADD_SUPPLIES_ITEM
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMIAPPS_CONFIRMED_SUPPLIES_ITEM')
DROP PROC RETAIL_CLOUD_EY_FAMIAPPS_CONFIRMED_SUPPLIES_ITEM
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMIAPPS_DISPLAY_SUPPLIES_ITEM')
DROP PROC RETAIL_CLOUD_EY_FAMIAPPS_DISPLAY_SUPPLIES_ITEM
GO


CREATE PROC RETAIL_CLOUD_EY_DISPLAY_TRX_UNFINNISHED
as
set nocount on
BEGIN TRY
	SELECT DOCNUMBR,DOCTYPE,SOURCETRX,WK_UserID,WK_Amount,WK_Businessday,JSONReq FROM RETAIL_TRANSACTION.dbo.TrWingsKitaTrxSync WHERE SyncStat = 0
END TRY
BEGIN CATCH
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_CHECK_IS_WINGSKITA
as
set nocount on
BEGIN TRY
	SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'IsWINGSKITA'
END TRY
BEGIN CATCH
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO


CREATE PROC RETAIL_CLOUD_EY_SMU_CLEAR_ORDER_TEMP
@COMPUTERIP VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		DELETE FROM TrSMUOrderHT WHERE COMPUTERIP = @COMPUTERIP
		DELETE FROM TrSMUOrderDT WHERE COMPUTERIP = @COMPUTERIP
		DELETE FROM TrSMUOrderPT WHERE COMPUTERIP = @COMPUTERIP
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_COPY_ORDER_TEMP_TO_HIST
@COMPUTERIP VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		CREATE TABLE #Order_to_process(order_id varchar(100))
		INSERT INTO #Order_to_process
		SELECT order_id FROM TrSMUOrderHT 
		WHERE order_id NOT IN (SELECT order_id FROM TrSMUOrderH)
		AND COMPUTERIP = @COMPUTERIP

		INSERT INTO TrSMUOrderP(order_id,payment_type,reference_no,amount,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		SELECT order_id,payment_type,reference_no,amount,CRUSRID,CREATDT,MDFUSRID,MODIFDT
		FROM TrSMUOrderPT
		WHERE COMPUTERIP = @COMPUTERIP
		AND order_id IN (SELECT order_id FROM #Order_to_process)

		INSERT INTO TrSMUOrderD(order_id,material_id,material_desc,ean11,qty_order_in_base,
		gross_price,disc_price,net_price,Total,promol_no,additional_notes,
		CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		SELECT order_id,material_id,material_desc,ean11,qty_order_in_base,
		gross_price,disc_price,net_price,Total,promol_no,additional_notes,
		CRUSRID,CREATDT,MDFUSRID,MODIFDT
		FROM TrSMUOrderDT WHERE COMPUTERIP = @COMPUTERIP
		AND order_id IN (SELECT order_id FROM #Order_to_process)

		INSERT INTO TrSMUOrderH(order_id,outlet_id,order_date,total_amount,pick_up,queue_no,POSReceipt,Businessday,StoreCode,SHIFTID,POSID,
		is_sent,order_type,[user_id],posstat,posmsg,order_status,order_msg,order_sts_DT,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		SELECT order_id,outlet_id,order_date,total_amount,pick_up,queue_no,POSReceipt,'','','','',
		is_sent,order_type,[user_id],posstat,posmsg,order_status,order_msg,order_sts_DT,CRUSRID,CREATDT,MDFUSRID,MODIFDT
		FROM TrSMUOrderHT WHERE COMPUTERIP = @COMPUTERIP
		AND order_id IN (SELECT order_id FROM #Order_to_process)
		
		SELECT order_id FROM #Order_to_process
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_SAVE_ORDER_HEADER_TEMP
@COMPUTERIP VARCHAR(100),
@order_id varchar(100),
@outlet_id varchar(100),
@order_date datetime,
@total_amount decimal(19,5),
@pick_up datetime,
@order_type varchar(10),
@user_id varchar(100),
@CRUSRID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
	IF NOT EXISTS (SELECT '' FROM TrSMUOrderHT WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id)
	BEGIN
		INSERT INTO TrSMUOrderHT(COMPUTERIP,order_id,outlet_id,order_date,total_amount,pick_up,queue_no,POSReceipt,
		is_sent,order_type,[user_id],posstat,posmsg,order_status,order_msg,order_sts_DT,
		CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		VALUES 
		(@COMPUTERIP,@order_id,@outlet_id,@order_date,@total_amount,@pick_up,'','',
		0,@order_type,@user_id,1,'MENUNGGU DIPROSES',6,'ORDER SEDANG DIPROSES',GETDATE(),
		@CRUSRID,GETDATE(),'','1900-01-01')
	END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_SAVE_ORDER_DETAIL_TEMP
@COMPUTERIP VARCHAR(100),
@order_id varchar(100),
@material_id varchar(100),
@material_desc varchar(200),
@ean11 varchar(100),
@qty_order_in_base decimal(19,5),
@gross_price decimal(19,5),
@disc_price decimal(19,5),
@net_price decimal(19,5),
@Total decimal(19,5),
@promol_no varchar(100),
@additional_notes varchar(8000),
@CRUSRID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
	IF NOT EXISTS (SELECT '' FROM TrSMUOrderDT WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id AND 
	material_id = @material_id AND promol_no = @promol_no)
	BEGIN
		INSERT INTO TrSMUOrderDT(COMPUTERIP,order_id,material_id,material_desc,ean11,
		qty_order_in_base,gross_price,disc_price,net_price,Total,promol_no,additional_notes,
		CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		VALUES 
		(@COMPUTERIP,@order_id,@material_id,@material_desc,@ean11,
		@qty_order_in_base,@gross_price,@disc_price,@net_price,@Total,@promol_no,@additional_notes,
		@CRUSRID,GETDATE(),'','1900-01-01')
	END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_SAVE_ORDER_PAYMENT_TEMP
@COMPUTERIP VARCHAR(100),
@order_id varchar(100),
@payment_type varchar(100),
@reference_no varchar(200),
@amount decimal(19,5),
@CRUSRID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
	IF NOT EXISTS (SELECT '' FROM TrSMUOrderPT WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id AND 
	payment_type = @payment_type)
	BEGIN
		INSERT INTO TrSMUOrderPT(COMPUTERIP,order_id,payment_type,reference_no,amount,
		CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		VALUES 
		(@COMPUTERIP,@order_id,@payment_type,@reference_no,@amount,
		@CRUSRID,GETDATE(),'','1900-01-01')
	END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_TO_SEND
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		SELECT order_id,POSReceipt,order_status,order_msg,order_sts_DT,queue_no FROM TrSMUOrderH WHERE is_sent = 0
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_UPDATE_IS_SENT_ORDER
@order_id varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		 UPDATE TrSMUOrderH SET is_sent = 1 WHERE order_id = @order_id
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_UPDATE_UNSENT_ORDER
@order_id varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		 UPDATE TrSMUOrderH SET is_sent = 0 WHERE order_id = @order_id
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_TO_BE_PROCESSED
@StoreCode varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		declare @limit_min int = -15
		declare @limit_max int = 15

		IF EXISTS 
		(
			SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME'
		)
		BEGIN
			SET @limit_min = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME') * -1
			SET @limit_max = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME')
		END
		ELSE
		BEGIN
			SET @limit_min = -15
			SET @limit_max = 15
		END

		EXEC('
		SELECT TOP 1 order_id,creatdt,SUBSTRING(CONVERT(VARCHAR,CONVERT(TIME,pick_up)),1,5) as pick_up,is_manual_finish,transtype FROM
		(
		 SELECT order_id,order_date as creatdt,pick_up,0 as is_manual_finish,order_type as transtype,posmsg FROM TrSMUOrderH
		 WHERE POSReceipt = '''' AND posstat = 1 AND total_amount > 0 AND
		 order_type IN (''A'')
		 AND SUBSTRING(CONVERT(VARCHAR,GETDATE(),108),1,5) BETWEEN 
		 SUBSTRING(CONVERT(VARCHAR,DATEADD(MINUTE,'+@limit_min+',CONVERT(TIME,pick_up,108))),1,5) AND
		 SUBSTRING(CONVERT(VARCHAR,DATEADD(MINUTE,'+@limit_max+',CONVERT(TIME,pick_up,108))),1,5)
		 AND outlet_id = '''+@StoreCode+'''
		 UNION
		 SELECT order_id,order_date as creatdt,pick_up,0 as is_manual_finish,order_type as transtype,posmsg FROM TrSMUOrderH
		 WHERE POSReceipt = '''' AND posstat = 1 AND total_amount > 0
		 AND order_type IN (''B'',''C'')
		 AND outlet_id = '''+@StoreCode+'''
		 UNION
		 SELECT order_id,order_date as creatdt,pick_up,0 as is_manual_finish,order_type as transtype,posmsg FROM TrSMUOrderH
		 WHERE POSReceipt = '''' AND posstat = 1 AND total_amount > 0 
		 AND order_type IN (''A'')
		 AND CONVERT(DATE,GETDATE(),103) <> CONVERT(DATE,order_date,103)
		 AND outlet_id = '''+@StoreCode+'''
		 UNION
		SELECT order_id,order_date as creatdt,pick_up,0 as is_manual_finish,order_type as transtype,posmsg FROM TrSMUOrderH
		WHERE POSReceipt = '''' AND posstat = 1 AND total_amount > 0 
		AND order_type IN (''A'')
		AND CONVERT(varchar,pick_up,112) + REPLACE(CONVERT(varchar,pick_up,108),'':'','''') < CONVERT(varchar,GETDATE(),112) + REPLACE(CONVERT(varchar,GETDATE(),108),'':'','''')
		AND outlet_id = '''+@StoreCode+'''
		)X
		')
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO


CREATE PROC RETAIL_CLOUD_EY_SMU_EXECUTE_ORDER_TO_POS
@COMPUTERIP VARCHAR(100),
@StoreCode VARCHAR(100),
@POSID VARCHAR(100),
@SHIFTID VARCHAR(100),
@Businessday VARCHAR(100),
@CLOUD_DOCNUMBR VARCHAR(100),
@SYS_USR VARCHAR(100),
@LSMEMBERSHIP varchar(100),
@COMPANYID varchar(100),
@COMPANYPCID varchar(100)
as
set nocount on
BEGIN TRY
	IF EXISTS (SELECT '' FROM TrSMUOrderH WHERE order_id = @CLOUD_DOCNUMBR AND POSReceipt <> '')
	BEGIN
		RAISERROR ('Sales is already downloaded.',16,1)
	END

	DECLARE @POSID_ONLINE AS VARCHAR(100) = ''
	SET @POSID_ONLINE = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'POS_ID_ONLINE')
	SET @POSID_ONLINE = ISNULL(@POSID_ONLINE,'')
	IF @POSID <> @POSID_ONLINE
	BEGIN
		RAISERROR ('POS ID Online is invalid.',16,1)
	END

	IF EXISTS (SELECT '' FROM TrSMUOrderD WHERE order_id = @CLOUD_DOCNUMBR AND FORMAT(CONVERT(INT,material_id), '000000000000000000') 
				NOT IN (SELECT ItemCode FROM RETAIL_MASTER.dbo.MItem))
	BEGIN
		DECLARE @NOT_REGISTERED_ITEM VARCHAR(8000) = (SELECT TOP 1 'Item is not registered.' + material_id + '|' + material_desc + '|' + ean11 FROM TrSMUOrderD WHERE order_id = @CLOUD_DOCNUMBR AND FORMAT(CONVERT(INT,material_id), '000000000000000000') 
				NOT IN (SELECT ItemCode FROM RETAIL_MASTER.dbo.MItem))
		RAISERROR (@NOT_REGISTERED_ITEM,16,1)
	END

	BEGIN TRY
		BEGIN TRAN
			DECLARE @MSG_ERR VARCHAR(8000) = ''
			DECLARE @SALES_TAX as decimal(19,5)=0
			DECLARE @order_num as int,@Barcode varchar(100), @article as varchar(100), @qty as decimal(17,5)=0, @price as decimal(19,5) = 0, @notes as varchar(500)='',@disc as decimal(19,5)=0,@promocode as varchar(100) = ''

			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesTenderT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesTenderTT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesAdditionalT WHERE COMPUTERIP = @COMPUTERIP

			DECLARE CSR_DOWNLOAD CURSOR FOR 
							SELECT ROW_NUMBER() OVER(ORDER BY material_id ASC,promol_no ASC) as order_num,ean11,material_id,qty_order_in_base,gross_price,additional_notes,disc_price,promol_no FROM TrSMUOrderD WHERE Order_id = @CLOUD_DOCNUMBR
			OPEN CSR_DOWNLOAD
			FETCH NEXT FROM CSR_DOWNLOAD INTO @order_num,@Barcode,@article,@qty,@price,@notes,@disc,@promocode
			WHILE @@FETCH_STATUS = 0
			BEGIN
				DECLARE
					@ItemDescriptionLong varchar(500)='',
					@ItemDescriptionShort varchar(50)='',
					@ItemType varchar(20),
					@TaxCode varchar(20),
					@OpenPriceFlg bit,
					@ItemValue as decimal(19,5)=0,
					@ReturnAble as bit,
					@MerchCat varchar(50),
					@MerchCatDesc varchar(100),
					@Category varchar(50),
					@CategoryDesc varchar(100),
					@Department varchar(50),
					@DepartmentDesc varchar(100),
					@Division varchar(50),
					@DivisionDesc varchar(100),
					@Tax decimal(19,5) = 0,
					@Subtotal decimal(19,5) = 0,
					@DPP decimal(19,5) = 0,
					@Total decimal(19,5) = 0
				
				SELECT TOP 1 @ItemDescriptionLong = ItemDescriptionLong,  
				@ItemDescriptionShort = ItemDescriptionShort, @ItemType = ItemType,
				@TaxCode = TaxCode, @OpenPriceFlg = OpenPriceFlg,
				@ReturnAble = ReturnAble,
				@MerchCat = MItem.MerchCat, @MerchCatDesc = MerchCatDesc,
				@Category = Category, @CategoryDesc = CategoryDesc,
				@Department = Department, @DepartmentDesc = DepartmentDesc, 
				@Division = Division, @DivisionDesc = DivisionDesc
				FROM RETAIL_MASTER.dbo.MItem 
				LEFT JOIN RETAIL_MASTER.dbo.MMerchandiseCategory ON MItem.MerchCat = MMerchandiseCategory.MerchCat
				where Barcode = @Barcode
				AND TaxCode <> ''

				SET @SALES_TAX = ISNULL((SELECT TOP 1 CONVERT(float,TaxValue)+1 FROM RETAIL_SYSTEMS.dbo.MTaxSetup WHERE TaxCode = @TaxCode AND GETDATE() BETWEEN StartDT AND EndDT ORDER BY CREATDT DESC),0)

				IF @Barcode = ''
				BEGIN
					SET @MSG_ERR = @article + 'is not registered.' + @article + ' ' + @Barcode
					RAISERROR (@MSG_ERR,16,1)
				END

				SET @Subtotal = @qty * (@price - @disc)
				SET @Total = @Subtotal
				IF @TaxCode <> 0
				BEGIN
					SET @Tax = ROUND(@Subtotal - (@Subtotal/@SALES_TAX),0)
				END
				SET @DPP = @Subtotal - @Tax

				INSERT INTO RETAIL_TRANSACTION.dbo.TrSalesT
				(StoreCode,BusinessDay,POSID,SHIFTID,COMPUTERIP,LNITMSEQ,Barcode,ItemCode,ItemDescriptionLong,ItemDescriptionShort,ItemType,TaxCode,MerchCat,MerchCatDesc,
				Category,CategoryDesc,Department,DepartmentDesc,Division,DivisionDesc,OpenPriceFlg,UnitPrice,Qty,Disc,Subtotal,DPP,Tax,Total,QtySales,SalesDisc,SalesSubtotal,SalesDPP,SalesTax,SalesTotal,QtyReturned,ReturnedDisc,ReturnedSubtotal,ReturnedDPP,ReturnedTax,ReturnedTotal,ItemValue,CRUSRID,CREATDT,MDFUSRID,MODIFDT,ReturnAble,PromoCode)
				VALUES 
				(@StoreCode,@BusinessDay,@POSID,@SHIFTID,@COMPUTERIP,@order_num,@Barcode,
				@article,@ItemDescriptionLong,@ItemDescriptionShort,@ItemType,@TaxCode,@MerchCat,@MerchCatDesc,
				@Category,@CategoryDesc,@Department,@DepartmentDesc,@Division,@DivisionDesc,@OpenPriceFlg,@price,@qty,@disc,@Subtotal,@DPP,@Tax,@Total,@qty,@disc,@Subtotal,@DPP,@Tax,@Total,0,0,0,0,0,0,@ItemValue,@SYS_USR,GETDATE(),'','1900-01-01 00:00:00.000',@ReturnAble,@promocode)

				INSERT INTO RETAIL_TRANSACTION.dbo.TrSalesAdditionalT(COMPUTERIP,LNITMSEQ,USERDEFINEID,USERDEFINEVALUE,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
				VALUES 
				(@COMPUTERIP,@order_num,@order_num,@notes,@SYS_USR,GETDATE(),'','1900-01-01 00:00:00.000')

				FETCH NEXT FROM CSR_DOWNLOAD INTO @order_num,@Barcode,@article,@qty,@Price,@notes,@disc,@promocode
			END
			CLOSE CSR_DOWNLOAD
			DEALLOCATE CSR_DOWNLOAD


			---------------------------------------PAYMENT PROCESSING----------------------------------------------
			DECLARE @paymentType varchar(100) = '',@ReferenceNo varchar(100) = '',@PaidAmount DECIMAL(19,5) = 0
			DECLARE @TotalPaidAmount DECIMAL(19,5)=0
			DECLARE CSR_DOWNLOAD_PAYMENT CURSOR FOR SELECT payment_type,reference_no,amount FROM TrSMUOrderP 
												WHERE Order_id = @CLOUD_DOCNUMBR
			OPEN CSR_DOWNLOAD_PAYMENT
			FETCH NEXT FROM CSR_DOWNLOAD_PAYMENT INTO @paymentType,@ReferenceNo,@PaidAmount
			WHILE @@FETCH_STATUS = 0
			BEGIN
				SET @TotalPaidAmount = @TotalPaidAmount + @PaidAmount
				EXEC RETAIL_TRANSACTION.dbo.TRX_EY_SAVE_SALES_TRANSACTION_TENDER_TEMP 
				@StoreCode, @BusinessDay, @POSID, @SHIFTID, @COMPUTERIP, @paymentType, @PaidAmount, @PaidAmount, @ReferenceNo, @SYS_USR
				FETCH NEXT FROM CSR_DOWNLOAD_PAYMENT INTO @paymentType,@ReferenceNo,@PaidAmount
			END
			CLOSE CSR_DOWNLOAD_PAYMENT
			DEALLOCATE CSR_DOWNLOAD_PAYMENT

			DECLARE @DPP_TOTAL as decimal(19,5) = 0, @Items_TOTAL as int = 0, @Tax_TOTAL as decimal(19,5) = 0
			SET @DPP_TOTAL = (SELECT ISNULL(SUM(DPP),0) FROM RETAIL_TRANSACTION.dbo.TrSalesT
			WHERE COMPUTERIP = @COMPUTERIP
			AND TaxCode <> '0'
			AND Barcode NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItemDonation))
			SET @DPP_TOTAL = ISNULL(@DPP_TOTAL,0) 

			SELECT @Items_TOTAL = ISNULL(ItemCount,0),
			@Tax_TOTAL = ISNULL(Tax,0)
			FROM
			(
				SELECT ISNULL(SUM(Total),0) as Total,@DPP as DPP,ISNULL(SUM(Tax),0) as Tax,ISNULL(SUM(Subtotal),0) as Subtotal FROM RETAIL_TRANSACTION.dbo.TrSalesT
				WHERE COMPUTERIP = @COMPUTERIP
			)TOTAL
			LEFT JOIN
			(
				SELECT CEILING(ISNULL(SUM(Qty),0)) as ItemCount
				FROM RETAIL_TRANSACTION.dbo.TrSalesT WHERE COMPUTERIP = @COMPUTERIP 
				AND Barcode NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItemReceiptDisallow)
			)ITEM_COUNT ON 1=1

			EXEC RETAIL_TRANSACTION.dbo.TRX_EY_POST_SALES_TRANSACTION
			@StoreCode,@BusinessDay,@POSID,@SHIFTID,@COMPUTERIP,@TotalPaidAmount,@DPP_TOTAL,
			@Tax_TOTAL,@TotalPaidAmount,@Items_TOTAL,@TotalPaidAmount,0,@TotalPaidAmount,
			@CLOUD_DOCNUMBR,'','',@SYS_USR,'','SALES TRANSACTION','',@LSMEMBERSHIP,@COMPANYID,@COMPANYPCID,
			0,0,0

			DECLARE @DOCNUMBR_POST VARCHAR(100) = (SELECT TOP 1 DOCNUMBR FROM RETAIL_TRANSACTION.dbo.TrSalesHH WHERE ORIDOCNUMBR = @CLOUD_DOCNUMBR ORDER BY CREATDT DESC)
	
			EXEC RETAIL_TRANSACTION.dbo.TRX_EY_POST_AGE_GENDER_CUSTOMER
			@StoreCode,
			@BusinessDay,
			@POSID,
			@SHIFTID,
			@SYS_USR,
			@DOCNUMBR_POST,
			'SALES TRANSACTION',
			'WingsKita'

			UPDATE RETAIL_TRANSACTION.dbo.TrKitchenHH SET TRXSOURCE = RIGHT(@CLOUD_DOCNUMBR,1) WHERE DOCNUMBR = @DOCNUMBR_POST

			UPDATE TrSMUOrderH SET POSReceipt = @DOCNUMBR_POST, StoreCode = @StoreCode, Businessday = @Businessday, POSID = @POSID, SHIFTID = @SHIFTID, 
			posstat = 0, posmsg = 'SUCCESS',Is_sent = 0,
			MDFUSRID = @COMPUTERIP,MODIFDT = GETDATE()
			WHERE Order_Id = @CLOUD_DOCNUMBR
		COMMIT
	END TRY
	BEGIN CATCH
		IF @@trancount  > 0
		BEGIN
			ROLLBACK
		END
		DECLARE @ERROR AS VARCHAR(MAX)
		SET @ERROR = ERROR_MESSAGE()
		RAISERROR(@ERROR,16,1)
		
		CLOSE CSR_DOWNLOAD
		DEALLOCATE CSR_DOWNLOAD
		CLOSE CSR_DOWNLOAD_PAYMENT
		DEALLOCATE CSR_DOWNLOAD_PAYMENT
	END CATCH
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	UPDATE TrSMUOrderH SET posstat = 1, posmsg = @ERROR_ALL
	WHERE order_id = @CLOUD_DOCNUMBR
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_UPDATE_QUEUE_NO_ORDER
@CLOUD_DOCNUMBR VARCHAR(100),
@QUEUENO VARCHAR(100)
as
set nocount on
	DECLARE @order_type as varchar(10) = (SELECT order_type FROM TrSMUOrderH WHERE order_id = @CLOUD_DOCNUMBR)
	IF @order_type = 'A'
	BEGIN
		IF @QUEUENO <> '???'
		BEGIN
			UPDATE TrSMUOrderH SET queue_no = @QUEUENO,is_sent = 0,
			order_status = 12,
			order_msg = 'NOMOR ANTRIAN ANDA : ' + @QUEUENO,
			order_sts_DT = GETDATE()
			WHERE order_id = @CLOUD_DOCNUMBR
		END
	END
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_DISPLAY_SELECTED_ORDER
@POS_DOCNUMBR VARCHAR(100)
as
set nocount on
	SELECT order_id,TrSMUOrderH.order_date as creatdt,SUBSTRING(CONVERT(VARCHAR,CONVERT(TIME,pick_up)),1,5) as pick_up,0 as is_manual_finish,order_type
	FROM TrSMUOrderH
	WHERE POSReceipt = @POS_DOCNUMBR
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER
@order_id varchar(100),
@order_status int,
@order_msg varchar(200)
as
set nocount on
	UPDATE TrSMUOrderH SET order_status = @order_status, order_msg = @order_msg, order_sts_DT = GETDATE(),is_sent = 0
	WHERE order_id = @order_id
set nocount off
GO
--ketika barista teken tombol centang ijo, maka update seperti ini :
--RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER '2010051907.5908-A',10,'ORDER SELESAI'

--ketika barista teken tombol pick up order, maka update seperti ini :
--RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER '2010051907.5908-B',13,'ORDER SIAP DIAMBIL DI TOKO'
--ketika barista teken tombol centang ijo, maka update seperti ini :
--RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER '2010061331.5908-B',10,'ORDER SELESAI'

--RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER '2010051907.5908-C',13,'ORDER SIAP DIAMBIL DI TOKO'
--RETAIL_CLOUD_EY_SMU_UPDATE_STATUS_ORDER '2010051907.5908-C',10,'ORDER SELESAI'


CREATE PROC RETAIL_CLOUD_EY_SMU_DISPLAY_ORDER_ALL
@StoreCode varchar(100),
@WHERECOND VARCHAR(8000)
as
set nocount on
	EXEC('
	SELECT [Order ID],[Order Date],[Order Type],[Order Amount],[Returned Amount],[Order Total],[POS Receipt No],[Status Code],[Status Message],[Last Updated],[Pick Up Time],[Queue No],[Processing Time (Hour)],[User ID]
	FROM
	(
		SELECT order_id as [Order ID],CONVERT(DATE,order_date,103) as [Order Date],order_type as [Order Type],
		total_amount as [Order Amount],ISNULL(ReturnedTotal*-1,0) as [Returned Amount],
		total_amount - ISNULL(ReturnedTotal,0) as [Order Total],
		POSReceipt as [POS Receipt No],
		order_status [Status Code],order_msg as [Status Message],order_sts_DT as [Last Updated],
		CASE WHEN order_type = ''A'' THEN
		LEFT(CONVERT(VARCHAR,CONVERT(TIME,pick_up,108)),5) 
		ELSE
			''''
		END
		as [Pick Up Time],
		queue_no as [Queue No],CREATDT,
		CASE 
		WHEN order_status = ''10'' OR order_status = ''14'' THEN DATEDIFF(hour,order_date,order_sts_DT) 
		ELSE
			DATEDIFF(hour,order_date,GETDATE()) 
		END as [Processing Time (Hour)],
		[user_id] as [User ID] 
		FROM TrSMUOrderH
		LEFT JOIN 
		(
			SELECT DOCNUMBR,ISNULL(SUM(ReturnedTotal),0) as ReturnedTotal FROM RETAIL_TRANSACTION.dbo.TrSalesDH
			GROUP BY DOCNUMBR
		)DETAIL
		ON TrSMUOrderH.POSReceipt = DETAIL.DOCNUMBR
		WHERE DATEDIFF(day,order_date,GETDATE()) < 240
		AND outlet_id = '''+@StoreCode+'''
		AND POSReceipt <> ''''
	)SALES
	'+@WHERECOND+'
	ORDER BY [Processing Time (Hour)] DESC')
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SMU_DISPLAY_SELECTED_ORDER_DETAIL
@StoreCode varchar(100),
@order_id varchar(100)
as
set nocount on
	SELECT [Order ID],[Order Date],[Order Type],[Order Amount],[Returned Amount],[Order Total],[POS Receipt No],[Status Code],[Status Message],[Last Updated],[Pick Up Time],[Queue No],[Processing Time (Hour)],[User ID] 
	FROM
	(
		SELECT order_id as [Order ID],order_date as [Order Date],order_type as [Order Type],
		total_amount as [Order Amount],ISNULL(ReturnedTotal*-1,0) as [Returned Amount],
		total_amount - ISNULL(ReturnedTotal,0) as [Order Total],
		POSReceipt as [POS Receipt No],
		order_status [Status Code],order_msg as [Status Message],order_sts_DT as [Last Updated],
		LEFT(CONVERT(VARCHAR,CONVERT(TIME,pick_up,108)),5) as [Pick Up Time],
		queue_no as [Queue No],CREATDT,
		CASE 
		WHEN order_status = '10' THEN DATEDIFF(hour,order_date,order_sts_DT) 
		ELSE
			DATEDIFF(hour,order_date,GETDATE()) 
		END as [Processing Time (Hour)],
		[user_id] as [User ID] 
		FROM TrSMUOrderH
		LEFT JOIN 
		(
			SELECT DOCNUMBR,ISNULL(SUM(ReturnedTotal),0) as ReturnedTotal FROM RETAIL_TRANSACTION.dbo.TrSalesDH
			GROUP BY DOCNUMBR
		)DETAIL
		ON TrSMUOrderH.POSReceipt = DETAIL.DOCNUMBR
		WHERE DATEDIFF(day,order_date,GETDATE()) < 240
		AND outlet_id = @StoreCode
		AND order_id = @order_id
		AND POSReceipt <> ''
	)SALES

	DECLARE @POSReceiptNo VARCHAR(100) = (SELECT TOP 1 POSReceipt FROM TrSMUOrderH WHERE Order_id = @order_id)
	SELECT ItemCode as [Item Code],Barcode as [Barcode],ItemDescriptionLong as [Item Description],Qty as [Qty Order],QtyReturned*-1 as [Qty Returned],Qty-QtyReturned as [Qty Total],(Qty-QtyReturned)*(UnitPrice-disc) as [Total Amount] FROM RETAIL_TRANSACTION.dbo.TrSalesDH WHERE DOCNUMBR = @POSReceiptNo

	SELECT Payment_Type as [Tender ID], Reference_No as [Reference No],Amount as [Paid Amount],ReturnedAmount*-1 as [Returned Amount] FROM TrSMUOrderP
	LEFT JOIN TrSMUOrderH ON TrSMUOrderP.order_id = TrSMUOrderH.order_id
	LEFT JOIN RETAIL_TRANSACTION.dbo.TrSalesHH ON TrSMUOrderP.order_id = TrSalesHH.ORIDOCNUMBR
	LEFT JOIN RETAIL_TRANSACTION.dbo.TrSalesTenderHH ON TrSalesHH.DOCNUMBR = TrSalesTenderHH.DOCNUMBR AND TrSalesTenderHH.TenderID  = TrSMUOrderP.Payment_Type
	WHERE 
	outlet_id = @StoreCode AND
	TrSMUOrderP.order_id = @order_id
	AND Amount>0

set nocount off
GO


CREATE PROC RETAIL_CLOUD_EY_SMU_DISPLAY_INCOMING_ORDER
@StoreCode varchar(100),
@WHERECOND VARCHAR(8000)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		declare @limit VARCHAR(100) = 15

		IF EXISTS 
		(
			SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME'
		)
		BEGIN
			SET @limit = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME') 
		END
		ELSE
		BEGIN
			SET @limit = 15
		END

		EXEC('
		SELECT [Pick Up Time],[Item Description],[Qty],[Order ID],[Order Date],[Order Type], 
		[Barcode],[User ID]
		FROM
		(
		 SELECT TrSMUOrderH.order_id as [Order ID],order_date as [Order Date],SUBSTRING(CONVERT(VARCHAR,CONVERT(TIME,pick_up)),1,5) as [Pick Up Time],order_type as [Order Type],
		 material_desc as [Item Description],ean11 as [Barcode],qty_order_in_base as [Qty],User_id as [User ID]
		 FROM TrSMUOrderH
		 LEFT JOIN TrSMUOrderD ON TrSMUOrderH.order_id = TrSMUOrderD.order_id
		 WHERE 
		 order_type IN (''A'')
		 AND DATEDIFF(MINUTE,GETDATE(),DATEADD(MINUTE,'+@limit+',pick_up)) > '+@limit+'
		 AND outlet_id = '''+@StoreCode+'''
		 AND POSReceipt = '''' AND posstat = 1
		)X
		' + @WHERECOND)

		EXEC('
		SELECT ISNULL(SUM([Qty]),0) AS [TOTAL QTY]
		FROM
		(
		 SELECT TrSMUOrderH.order_id as [Order ID],order_date as [Order Date],SUBSTRING(CONVERT(VARCHAR,CONVERT(TIME,pick_up)),1,5) as [Pick Up Time],order_type as [Order Type],
		 material_desc as [Item Description],ean11 as [Barcode],qty_order_in_base as [Qty],User_id as [User ID]
		 FROM TrSMUOrderH
		 LEFT JOIN TrSMUOrderD ON TrSMUOrderH.order_id = TrSMUOrderD.order_id
		 WHERE 
		 order_type IN (''A'')
		 AND DATEDIFF(MINUTE,GETDATE(),DATEADD(MINUTE,'+@limit+',pick_up)) > '+@limit+'
		 AND outlet_id = '''+@StoreCode+'''
		 AND POSReceipt = '''' AND posstat = 1
		)X
		' + @WHERECOND)
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_SAVE_HEADER_TEMP
@COMPUTERIP VARCHAR(100),
@id varchar(100),
@order_id varchar(100),
@outlet_id varchar(100),
@point_amt DECIMAL(19,5),
@point_reference varchar(100),
@status varchar(100),
@channel varchar(100),
@local_id varchar(100),
@local_name varchar(100),
@ordered_at datetime,
@payment_method varchar(100),
@payment_status varchar(100),
@total_price DECIMAL(19,5),
@shipping_price DECIMAL(19,5),
@discount_shipping DECIMAL(19,5),
@channel_rebate DECIMAL(19,5),
@discount_amount DECIMAL(19,5),
@customer_info_id varchar(100),
@customer_info_name varchar(100),
@customer_info_email varchar(100),
@customer_info_since datetime,
@customer_address_address_1 varchar(500),
@customer_address_address_2 varchar(500),
@customer_address_city varchar(100),
@customer_address_country varchar(100),
@customer_address_name varchar(100),
@customer_address_phone varchar(100),
@customer_address_postal_code varchar(100),
@customer_address_province varchar(100),
@customer_address_province_code varchar(100),
@customer_address_sub_district varchar(100),
@customer_address_district varchar(100),
@customer_address_coordinate varchar(100),
@order_status varchar(100),
@discount_type varchar(100),
@order_type varchar(100),
@CRUSRID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		INSERT INTO TrSaleorHT(COMPUTERIP,id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
		local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,discount_shipping,channel_rebate,discount_amount,
		customer_info_id,customer_info_name,customer_info_email,customer_info_since,
		customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
		customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
		order_status,discount_type,order_type,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		VALUES 
		(@COMPUTERIP,@id,@order_id,@outlet_id,@point_amt,@point_reference,@status,@channel,@local_id,
		@local_name,@ordered_at,@payment_method,@payment_status,@total_price,@shipping_price,@discount_shipping,@channel_rebate,@discount_amount,
		@customer_info_id,@customer_info_name,@customer_info_email,@customer_info_since,
		@customer_address_address_1,@customer_address_address_2,@customer_address_city,@customer_address_country,@customer_address_name,@customer_address_phone,@customer_address_postal_code,
		@customer_address_province,@customer_address_province_code,@customer_address_sub_district,@customer_address_district,@customer_address_coordinate,
		@order_status,ISNULL(@discount_type,'voucher'),ISNULL(@order_type,'reguler'),@CRUSRID,GETDATE(),'','1900-01-01')
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_SAVE_DETAIL_TEMP
@COMPUTERIP VARCHAR(100),
@id varchar(100),
@order_id varchar(100),
@local_id varchar(100),
@order_num int,
@variant_sku varchar(100),
@qty DECIMAL(17,5),
@price DECIMAL(19,5),
@sale_price DECIMAL(19,5),
@total_price DECIMAL(19,5),
@CRUSRID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		INSERT INTO TrSaleorDT(COMPUTERIP,id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,total_price,
		CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		VALUES 
		(@COMPUTERIP,@id,@order_id,@local_id,@order_num,@variant_sku,@qty,@price,@sale_price,@total_price,
		@CRUSRID,GETDATE(),'','1900-01-01')
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_CLEAR_TEMP
@COMPUTERIP VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		DELETE FROM TrSaleorHT WHERE COMPUTERIP = @COMPUTERIP
		DELETE FROM TrSaleorDT WHERE COMPUTERIP = @COMPUTERIP
		DELETE FROM SALEOR_ORDER_STATUS_T WHERE COMPUTERIP = @COMPUTERIP
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_SAVE_WORK_HIST
@COMPUTERIP VARCHAR(100)
as
set nocount on
BEGIN TRY
	CREATE TABLE #SYNC_ORDER_SALEOR (order_id varchar(100),Status_Updated varchar(100))
	BEGIN TRAN
		DECLARE @order_id_loop varchar(100)
		DECLARE CSR_LOOP_TRX CURSOR FOR SELECT order_id FROM TrSaleorHT WHERE COMPUTERIP = @COMPUTERIP
		OPEN CSR_LOOP_TRX
		FETCH NEXT FROM CSR_LOOP_TRX INTO @order_id_loop
		WHILE @@FETCH_STATUS = 0
		BEGIN
			BEGIN TRY
				DECLARE @id varchar(100),
				@order_id varchar(100),
				@outlet_id varchar(100),
				@point_amt DECIMAL(19,5),
				@point_reference varchar(100),
				@status varchar(100),
				@channel varchar(100),
				@local_id varchar(100),
				@local_name varchar(100),
				@ordered_at datetime,
				@payment_method varchar(100),
				@payment_status varchar(100),
				@total_price DECIMAL(19,5),
				@shipping_price DECIMAL(19,5),
				@discount_shipping DECIMAL(19,5),
				@channel_rebate DECIMAL(19,5),
				@discount_amount DECIMAL(19,5),
				@customer_info_id varchar(100),
				@customer_info_name varchar(100),
				@customer_info_email varchar(100),
				@customer_info_since datetime,
				@customer_address_address_1 varchar(500),
				@customer_address_address_2 varchar(500),
				@customer_address_city varchar(100),
				@customer_address_country varchar(100),
				@customer_address_name varchar(100),
				@customer_address_phone varchar(100),
				@customer_address_postal_code varchar(100),
				@customer_address_province varchar(100),
				@customer_address_province_code varchar(100),
				@customer_address_sub_district varchar(100),
				@customer_address_district varchar(100),
				@customer_address_coordinate varchar(100),
				@order_status varchar(100),
				@discount_type varchar(100),
				@order_type varchar(100)
					
				DECLARE CSR_LOOP_H CURSOR FOR SELECT id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
				local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,discount_shipping,channel_rebate,discount_amount,
				customer_info_id,customer_info_name,customer_info_email,customer_info_since,
				customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
				customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
				order_status,discount_type,order_type FROM TrSaleorHT WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop
				OPEN CSR_LOOP_H
				FETCH NEXT FROM CSR_LOOP_H INTO @id,@order_id,@outlet_id,@point_amt,@point_reference,@status,@channel,@local_id,
				@local_name,@ordered_at,@payment_method,@payment_status,@total_price,@shipping_price,@discount_shipping,@channel_rebate,@discount_amount,
				@customer_info_id,@customer_info_name,@customer_info_email,@customer_info_since,
				@customer_address_address_1,@customer_address_address_2,@customer_address_city,@customer_address_country,@customer_address_name,@customer_address_phone,@customer_address_postal_code,
				@customer_address_province,@customer_address_province_code,@customer_address_sub_district,@customer_address_district,@customer_address_coordinate,
				@order_status,@discount_type,@order_type
				CLOSE CSR_LOOP_H
				DEALLOCATE CSR_LOOP_H

				IF NOT EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @order_id_loop) --tidak terdownload
				OR EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @order_id_loop AND RC <> '200') --tidak ok
				BEGIN
					DELETE FROM TrSaleorHW WHERE order_id = @order_id_loop
					DELETE FROM TrSaleorDW WHERE order_id = @order_id_loop

					DELETE FROM TrSaleorHH WHERE order_id = @order_id_loop
					DELETE FROM TrSaleorDH WHERE order_id = @order_id_loop

					DELETE FROM SALEOR_ORDER_STATUS WHERE order_id = @order_id_loop

					INSERT INTO TrSaleorHW(id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
					local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,discount_shipping,channel_rebate,discount_amount,
					customer_info_id,customer_info_name,customer_info_email,customer_info_since,
					customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
					customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
					order_status,discount_type,order_type,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
					SELECT id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
					local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,@discount_shipping,channel_rebate,discount_amount,
					customer_info_id,customer_info_name,customer_info_email,customer_info_since,
					customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
					customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
					order_status,discount_type,order_type,CRUSRID,CREATDT,MDFUSRID,MODIFDT
					FROM TrSaleorHT
					WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop

					INSERT INTO TrSaleorDW(id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,total_price,
					CRUSRID,CREATDT,MDFUSRID,MODIFDT)
					SELECT id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,total_price,
					CRUSRID,CREATDT,MDFUSRID,MODIFDT
					FROM TrSaleorDT
					WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop

					IF ISNULL(@discount_type,'voucher') = 'voucher' --discount amount split to line item, header discount amount = 0
					BEGIN
						INSERT INTO TrSaleorHH(id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
						local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,discount_shipping,channel_rebate,discount_amount,
						customer_info_id,customer_info_name,customer_info_email,customer_info_since,
						customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
						customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
						order_status,discount_type,order_type,payment_method_POS,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
						SELECT id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
						local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,@discount_shipping,channel_rebate,0,
						customer_info_id,customer_info_name,customer_info_email,customer_info_since,
						customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
						customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
						order_status,discount_type,order_type,
						CASE 
						WHEN payment_method = 'Kartu Kredit MASTERCARD' THEN 'Kartu Kredit MASTERCARD'
						WHEN payment_method = 'Kartu Kredit VISA' THEN	'Kartu Kredit VISA'
						WHEN payment_method = 'Kartu Kredit JCB' THEN	'Kartu Kredit JCB'
						WHEN payment_method = 'Kartu Kredit' THEN	'Kartu Kredit'
						WHEN payment_method like '%Virtual Account%' AND  payment_method not like '%BCA%' THEN 'Virtual Account'
						WHEN payment_method like '%Virtual Account%' AND  payment_method like '%BCA%' THEN 'Virtual Account BCA'
						WHEN payment_method = 'QRIS' THEN 'QRIS'
						ELSE
							'UNKNOWN'
						END 
						as payment_method_POS,
						CRUSRID,CREATDT,MDFUSRID,MODIFDT
						FROM TrSaleorHT
						WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop

						DECLARE @TOTAL_TRX as DECIMAL(19,5) = (SELECT ISNULL(SUM(Qty*Price),0) FROM TrSaleorDT WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop)

						INSERT INTO TrSaleorDH(id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,total_price,
						Price_after_voucher,sale_price_voucher,total_price_after_voucher,
						CRUSRID,CREATDT,MDFUSRID,MODIFDT)
						SELECT id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,qty*price,
						Price - (ROUND((price/(@TOTAL_TRX) * @discount_amount),0)),
						ROUND((price/(@TOTAL_TRX) * @discount_amount),0),
						(Qty*Price) - (ROUND((price/(@TOTAL_TRX) * @discount_amount),0)*Qty),
						CRUSRID,CREATDT,MDFUSRID,MODIFDT
						FROM TrSaleorDT
						WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop
						AND (variant_sku not like 'erp-%' AND variant_sku not like 'level-%' AND variant_sku <> 'null' AND variant_sku not like 'opt-%')
					END
					ELSE --discount amount go to footer, header discount amount stay
					BEGIN
						INSERT INTO TrSaleorHH(id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
						local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,discount_shipping,channel_rebate,discount_amount,
						customer_info_id,customer_info_name,customer_info_email,customer_info_since,
						customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
						customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
						order_status,discount_type,order_type,payment_method_POS,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
						SELECT id,order_id,outlet_id,point_amt,point_reference,[status],channel,local_id,
						local_name,ordered_at,payment_method,payment_status,total_price,shipping_price,@discount_shipping,channel_rebate,discount_amount,
						customer_info_id,customer_info_name,customer_info_email,customer_info_since,
						customer_address_address_1,customer_address_address_2,customer_address_city,customer_address_country,customer_address_name,customer_address_phone,customer_address_postal_code,
						customer_address_province,customer_address_province_code,customer_address_sub_district,customer_address_district,customer_address_coordinate,
						order_status,discount_type,order_type,
						CASE 
						WHEN payment_method = 'Kartu Kredit MASTERCARD' THEN 'Kartu Kredit MASTERCARD'
						WHEN payment_method = 'Kartu Kredit VISA' THEN	'Kartu Kredit VISA'
						WHEN payment_method = 'Kartu Kredit JCB' THEN	'Kartu Kredit JCB'
						WHEN payment_method = 'Kartu Kredit' THEN	'Kartu Kredit'
						WHEN payment_method like '%Virtual Account%' AND  payment_method not like '%BCA%' THEN 'Virtual Account'
						WHEN payment_method like '%Virtual Account%' AND  payment_method like '%BCA%' THEN 'Virtual Account BCA'
						WHEN payment_method = 'QRIS' THEN 'QRIS'
						ELSE
							'UNKNOWN'
						END 
						as payment_method_POS,
						CRUSRID,CREATDT,MDFUSRID,MODIFDT
						FROM TrSaleorHT
						WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop

						INSERT INTO TrSaleorDH(id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,total_price,
						Price_after_voucher,sale_price_voucher,total_price_after_voucher,
						CRUSRID,CREATDT,MDFUSRID,MODIFDT)
						SELECT id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,qty*price,
						Price,0,
						qty*price,
						CRUSRID,CREATDT,MDFUSRID,MODIFDT
						FROM TrSaleorDT
						WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop
						AND (variant_sku not like 'erp-%' AND variant_sku not like 'level-%' AND variant_sku <> 'null' AND variant_sku not like 'opt-%')
					END

					--INSERT SHIPPING COST
					DECLARE @ORDER_NUM_NEXT as int = (SELECT MAX(order_num) + 1 FROM TrSaleorDT WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop)
					INSERT INTO TrSaleorDH(id,order_id,local_id,order_num,variant_sku,qty,price,sale_price,total_price,
					Price_after_voucher,sale_price_voucher,total_price_after_voucher,
					CRUSRID,CREATDT,MDFUSRID,MODIFDT)
					SELECT TOP 1 id,order_id,local_id,@ORDER_NUM_NEXT,'Biaya Pengiriman',1,@shipping_price,@discount_shipping,ISNULL(@shipping_price-@discount_shipping,0) as total_price,
					@shipping_price,@discount_shipping,ISNULL(@shipping_price-@discount_shipping,0) as total_price_after_voucher,
					CRUSRID,CREATDT,MDFUSRID,MODIFDT
					FROM TrSaleorDT
					WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop

					--UPDATE HEADER TOTAL
					UPDATE TrSaleorHH SET total_price = ISNULL(DETAIL.TOTAL_DETAIL,0)
					FROM 
					(
						SELECT order_id,ISNULL(SUM(Total_Price_After_Voucher),0) as TOTAL_DETAIL
						FROM TrSaleorDH 
						GROUP BY order_id
					)DETAIL
					WHERE TrSaleorHH.order_id = DETAIL.order_id
					AND TrSaleorHH.order_id = @order_id_loop

					
					INSERT INTO SALEOR_ORDER_STATUS(id,order_id,local_id,Order_status,Order_DT,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
					SELECT id,order_id,local_id,Order_status,Order_DT,CRUSRID,CREATDT,MDFUSRID,MODIFDT
					FROM SALEOR_ORDER_STATUS_T
					WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop

					IF NOT EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @order_id_loop)
					BEGIN
						INSERT INTO SALEOR_DOWNLOAD(order_id,RC,RM,POS_DOCNUMBR,StoreCode,Businessday,POSID,SHIFTID,
						IsDownloadToPOS,LastDownloadDT,LastDownloadRC,LastDownloadRM,
						IsUploadToCloud,LastUploadDT,LastUploadRC,LastUploadRM,LastUploadMSG,LastUploadRCDT,
						CRUSRID,CREATDT,MDFUSRID,MODIFDT)
						VALUES (@order_id_loop,'200','SUCCESS','','','','','',
						1,'1900-01-01','','',
						1,GETDATE(),'','','','1900-01-01',
						@COMPUTERIP,GETDATE(),'','1900-01-01')
					END
					ELSE
					BEGIN
						UPDATE SALEOR_DOWNLOAD SET RC = '200', RM = 'SUCCESS', 
						IsDownloadToPOS = 1, LastDownloadDT = '1900-01-01',
						IsUploadToCloud =1, LastUploadDT = GETDATE(),
						MDFUSRID = @COMPUTERIP, MODIFDT = GETDATE()
						WHERE order_id = @order_id_loop
					END
					INSERT INTO #SYNC_ORDER_SALEOR(order_id,Status_Updated) VALUES (@order_id_loop,'add new order')
				END
				ELSE
				BEGIN
					IF EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @order_id_loop AND RC='200') --sudah download & ok
					BEGIN
						DECLARE @Status_Old VARCHAR(100) = (SELECT order_status FROM TrSaleorHH WHERE order_id = @order_id_loop)
						IF @Status_Old <> @order_status
						BEGIN
							UPDATE TrSaleorHH SET order_status = @order_status,MDFUSRID = @COMPUTERIP,MODIFDT = GETDATE() WHERE order_id = @order_id_loop
							UPDATE TrSaleorHW SET order_status = @order_status,MDFUSRID = @COMPUTERIP,MODIFDT = GETDATE() WHERE order_id = @order_id_loop

							DELETE FROM SALEOR_ORDER_STATUS WHERE order_id = @order_id_loop
							INSERT INTO SALEOR_ORDER_STATUS(id,order_id,local_id,Order_status,Order_DT,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
							SELECT id,order_id,local_id,Order_status,Order_DT,CRUSRID,CREATDT,MDFUSRID,MODIFDT
							FROM SALEOR_ORDER_STATUS_T
							WHERE COMPUTERIP = @COMPUTERIP AND order_id = @order_id_loop


							IF NOT EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @order_id_loop)
							BEGIN
								INSERT INTO SALEOR_DOWNLOAD(order_id,RC,RM,POS_DOCNUMBR,StoreCode,Businessday,POSID,SHIFTID,
								IsDownloadToPOS,LastDownloadDT,LastDownloadRC,LastDownloadRM,
								IsUploadToCloud,LastUploadDT,LastUploadRC,LastUploadRM,LastUploadMSG,LastUploadRCDT,
								CRUSRID,CREATDT,MDFUSRID,MODIFDT)
								VALUES (@order_id_loop,'200','SUCCESS','','','','','',
								1,'1900-01-01','','',
								1,GETDATE(),'','','','1900-01-01',
								@COMPUTERIP,GETDATE(),'','1900-01-01')
							END
							ELSE
							BEGIN
								UPDATE SALEOR_DOWNLOAD SET RC = '200', RM = 'SUCCESS', 
								IsDownloadToPOS = 1, LastDownloadDT = '1900-01-01',
								IsUploadToCloud =1, LastUploadDT = GETDATE(),
								MDFUSRID = @COMPUTERIP, MODIFDT = GETDATE()
								WHERE order_id = @order_id_loop
							END

							INSERT INTO #SYNC_ORDER_SALEOR(order_id,Status_Updated) VALUES (@order_id_loop,'order status updated')
						END
						ELSE
						BEGIN
							INSERT INTO #SYNC_ORDER_SALEOR(order_id,Status_Updated) VALUES (@order_id_loop,'reupdated cloud')
						END
					END
				END
			END TRY
			BEGIN CATCH
				DECLARE @ERROR_MESSAGE AS VARCHAR(500) = ERROR_MESSAGE()
				IF NOT EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @order_id_loop)
				BEGIN
					INSERT INTO SALEOR_DOWNLOAD(order_id,RC,RM,POS_DOCNUMBR,StoreCode,Businessday,POSID,SHIFTID,
					IsDownloadToPOS,LastDownloadDT,LastDownloadRC,LastDownloadRM,
					IsUploadToCloud,LastUploadDT,LastUploadRC,LastUploadRM,LastUploadMSG,LastUploadRCDT,
					CRUSRID,CREATDT,MDFUSRID,MODIFDT)
					VALUES (@order_id_loop,'400',@ERROR_MESSAGE,'','','','','',
					0,'1900-01-01','','',
					0,'1900-01-01','','','','1900-01-01',
					@COMPUTERIP,GETDATE(),'','1900-01-01')
				END
				ELSE
				BEGIN
					UPDATE SALEOR_DOWNLOAD SET RC = '400', RM = @ERROR_MESSAGE, 
					IsDownloadToPOS = 1, LastDownloadDT = '1900-01-01',
					IsUploadToCloud =1, LastUploadDT = GETDATE(),
					MDFUSRID = @COMPUTERIP, MODIFDT = GETDATE()
					WHERE order_id = @order_id_loop
				END
			END CATCH
			FETCH NEXT FROM CSR_LOOP_TRX INTO @order_id_loop
		END
		CLOSE CSR_LOOP_TRX
		DEALLOCATE CSR_LOOP_TRX
	COMMIT

	SELECT Order_id,Status_Updated FROM #SYNC_ORDER_SALEOR
	SELECT Order_id,Status_Updated FROM #SYNC_ORDER_SALEOR WHERE order_id not in (SELECT order_id FROM TrSaleorHT WHERE COMPUTERIP = @COMPUTERIP)

	EXEC RETAIL_CLOUD_EY_SALEOR_CLEAR_TEMP @COMPUTERIP
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_SAVE_ORDER_STATUS_TEMP
@COMPUTERIP VARCHAR(100),
@id varchar(100),
@order_id varchar(100),
@local_id varchar(100),
@OrderStatus Varchar(100),
@OrderStatusDT datetime,
@CRUSRID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		INSERT INTO SALEOR_ORDER_STATUS_T(COMPUTERIP,id,order_id,local_id,Order_status,Order_DT,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
		VALUES (@COMPUTERIP,@id,@order_id,@local_id,@OrderStatus,@OrderStatusDT,@CRUSRID,GETDATE(),'','1900-01-01')
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_UPDATE_ORDER_CLOUD
@order_id varchar(100),
@rc varchar(100),
@rm varchar(100),
@msg varchar(100),
@CRUSRID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF @rc = 200
		BEGIN
			UPDATE SALEOR_DOWNLOAD 
			SET isUploadToCloud = 0,
			LastUploadRC = @rc,
			LastUploadRM = @rm,
			LastUploadMSG = @msg,
			LastUploadRCDT = GETDATE(),
			MDFUSRID = @CRUSRID,
			MODIFDT = GETDATE()
			WHERE order_id = @order_id 
		END
		ELSE
		BEGIN
			UPDATE SALEOR_DOWNLOAD 
			SET 
			LastUploadRC = @rc,
			LastUploadRM = @rm,
			LastUploadMSG = @msg,
			LastUploadRCDT = GETDATE(),
			MDFUSRID = @CRUSRID,
			MODIFDT = GETDATE()
			WHERE order_id = @order_id 
		END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_TO_BE_PROCESSED
@StoreCode varchar(100)
as
set nocount on
BEGIN TRY
	SELECT order_id FROM SALEOR_DOWNLOAD WHERE IsDownloadToPOS = 1 AND POS_DOCNUMBR = ''
END TRY
BEGIN CATCH
	DECLARE @ERROR AS VARCHAR(MAX)
	SET @ERROR = ERROR_MESSAGE()
	RAISERROR(@ERROR,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_EXECUTE_ORDER_TO_POS
@COMPUTERIP VARCHAR(100),
@StoreCode VARCHAR(100),
@POSID VARCHAR(100),
@SHIFTID VARCHAR(100),
@Businessday VARCHAR(100),
@CLOUD_DOCNUMBR VARCHAR(100),
@SYS_USR VARCHAR(100),
@LSMEMBERSHIP varchar(100),
@COMPANYID varchar(100),
@COMPANYPCID varchar(100)
as
set nocount on
BEGIN TRY
	IF EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @CLOUD_DOCNUMBR AND POS_DOCNUMBR <> '')
	BEGIN
		RAISERROR ('Sales is already downloaded.',16,1)
	END

	DECLARE @POSID_ONLINE AS VARCHAR(100) = ''
	SET @POSID_ONLINE = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'POS_ID_ONLINE')
	SET @POSID_ONLINE = ISNULL(@POSID_ONLINE,'')
	IF @POSID <> @POSID_ONLINE
	BEGIN
		RAISERROR ('POS ID Online is invalid.',16,1)
	END

	IF EXISTS (SELECT '' FROM TrSaleorDH WHERE order_id = @CLOUD_DOCNUMBR AND variant_sku
				NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItem))
	BEGIN
		DECLARE @NOT_REGISTERED_ITEM VARCHAR(8000) = (SELECT TOP 1 'Item is not registered. (' + variant_sku + ')' FROM TrSaleorDH WHERE order_id = @CLOUD_DOCNUMBR 
				AND variant_sku NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItem))
		SET @NOT_REGISTERED_ITEM = @CLOUD_DOCNUMBR + ' - ' + @NOT_REGISTERED_ITEM
		RAISERROR (@NOT_REGISTERED_ITEM,16,1)
	END

	BEGIN TRY
		BEGIN TRAN
			DECLARE @MSG_ERR VARCHAR(8000) = ''
			DECLARE @SALES_TAX as decimal(19,5)=0
			SET @SALES_TAX = ISNULL((SELECT CONVERT(float,SETUPVALUE)+1 FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'SALES_TAX'),0)

			DECLARE @order_num as int,@Barcode varchar(100), @qty as decimal(17,5)=0, @price as decimal(19,5) = 0,@disc as decimal(19,5)=0,@promocode as varchar(100) = ''

			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesTenderT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesTenderTT WHERE COMPUTERIP = @COMPUTERIP
			DELETE FROM RETAIL_TRANSACTION.dbo.TrSalesAdditionalT WHERE COMPUTERIP = @COMPUTERIP

			DECLARE CSR_DOWNLOAD CURSOR FOR 
							SELECT order_num,variant_sku,qty,price,sale_price_voucher,
							case when isnull(sale_price_voucher,0) > 0 THEN
							'Voucher Saleor' ELSE '' END FROM TrSaleorDH WHERE Order_id = @CLOUD_DOCNUMBR
			OPEN CSR_DOWNLOAD
			FETCH NEXT FROM CSR_DOWNLOAD INTO @order_num,@Barcode,@qty,@price,@disc,@promocode

			WHILE @@FETCH_STATUS = 0
			BEGIN
				DECLARE
					@material_id varchar(100),
					@ItemDescriptionLong varchar(500),
					@ItemDescriptionShort varchar(50),
					@ItemType varchar(20),
					@TaxCode varchar(20),
					@OpenPriceFlg bit,
					@ItemValue as decimal(19,5)=0,
					@ReturnAble as bit,
					@MerchCat varchar(50),
					@MerchCatDesc varchar(100),
					@Category varchar(50),
					@CategoryDesc varchar(100),
					@Department varchar(50),
					@DepartmentDesc varchar(100),
					@Division varchar(50),
					@DivisionDesc varchar(100),
					@Tax decimal(19,5) = 0,
					@Subtotal decimal(19,5) = 0,
					@DPP decimal(19,5) = 0,
					@Total decimal(19,5) = 0
				
				SELECT TOP 1 @material_id = ItemCode,@ItemDescriptionLong = ItemDescriptionLong,  
				@ItemDescriptionShort = ItemDescriptionShort, @ItemType = ItemType,
				@TaxCode = TaxCode, @OpenPriceFlg = OpenPriceFlg,
				@ReturnAble = ReturnAble,
				@MerchCat = MItem.MerchCat, @MerchCatDesc = MerchCatDesc,
				@Category = Category, @CategoryDesc = CategoryDesc,
				@Department = Department, @DepartmentDesc = DepartmentDesc, 
				@Division = Division, @DivisionDesc = DivisionDesc
				FROM RETAIL_MASTER.dbo.MItem 
				LEFT JOIN RETAIL_MASTER.dbo.MMerchandiseCategory ON MItem.MerchCat = MMerchandiseCategory.MerchCat
				where Barcode = @Barcode

				IF @Barcode = ''
				BEGIN
					SET @MSG_ERR = @Barcode + 'is not registered.' 
					RAISERROR (@MSG_ERR,16,1)
				END

				IF @TaxCode = ''
				BEGIN
					SET @MSG_ERR = @Barcode + ' tax code is blank.' 
					RAISERROR (@MSG_ERR,16,1)
				END

				SET @Subtotal = @qty * (@price - @disc)
				SET @Total = @Subtotal
				IF @TaxCode <> 0
				BEGIN
					SET @Tax = ROUND(@Subtotal - (@Subtotal/@SALES_TAX),0)
				END
				SET @DPP = @Subtotal - @Tax

				INSERT INTO RETAIL_TRANSACTION.dbo.TrSalesT
				(StoreCode,BusinessDay,POSID,SHIFTID,COMPUTERIP,LNITMSEQ,Barcode,ItemCode,ItemDescriptionLong,ItemDescriptionShort,ItemType,TaxCode,MerchCat,MerchCatDesc,
				Category,CategoryDesc,Department,DepartmentDesc,Division,DivisionDesc,OpenPriceFlg,UnitPrice,Qty,Disc,Subtotal,DPP,Tax,Total,QtySales,SalesDisc,SalesSubtotal,SalesDPP,SalesTax,SalesTotal,QtyReturned,ReturnedDisc,ReturnedSubtotal,ReturnedDPP,ReturnedTax,ReturnedTotal,ItemValue,CRUSRID,CREATDT,MDFUSRID,MODIFDT,ReturnAble,PromoCode)
				VALUES 
				(@StoreCode,@BusinessDay,@POSID,@SHIFTID,@COMPUTERIP,@order_num,@Barcode,
				@material_id,@ItemDescriptionLong,@ItemDescriptionShort,@ItemType,@TaxCode,@MerchCat,@MerchCatDesc,
				@Category,@CategoryDesc,@Department,@DepartmentDesc,@Division,@DivisionDesc,@OpenPriceFlg,@price,@qty,@disc,@Subtotal,@DPP,@Tax,@Total,@qty,@disc,@Subtotal,@DPP,@Tax,@Total,0,0,0,0,0,0,@ItemValue,@SYS_USR,GETDATE(),'','1900-01-01 00:00:00.000',@ReturnAble,@promocode)

				--INSERT INTO RETAIL_TRANSACTION.dbo.TrSalesAdditionalT(COMPUTERIP,LNITMSEQ,USERDEFINEID,USERDEFINEVALUE,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
				--VALUES 
				--(@COMPUTERIP,@order_num,@order_num,@notes,@SYS_USR,GETDATE(),'','1900-01-01 00:00:00.000')

				FETCH NEXT FROM CSR_DOWNLOAD INTO @order_num,@Barcode,@qty,@Price,@disc,@promocode
			END
			CLOSE CSR_DOWNLOAD
			DEALLOCATE CSR_DOWNLOAD

			IF EXISTS (SELECT '' FROM TrSaleorHH WHERE order_id = @CLOUD_DOCNUMBR AND payment_method_POS = 'UNKNOWN')
			BEGIN
				DECLARE @NOT_REGISTERED_PAYMENT VARCHAR(8000) = (SELECT TOP 1 'Payment is not registered.' + payment_method FROM TrSaleorHH WHERE order_id = @CLOUD_DOCNUMBR)
				RAISERROR (@NOT_REGISTERED_PAYMENT,16,1)
			END

			---------------------------------------PAYMENT PROCESSING----------------------------------------------
			DECLARE @paymentType varchar(100) = '',@ReferenceNo varchar(100) = '',@PaidAmount DECIMAL(19,5) = 0
			DECLARE @TotalPaidAmount DECIMAL(19,5)=0
			DECLARE CSR_DOWNLOAD_PAYMENT CURSOR FOR SELECT payment_method_POS,payment_method,isnull(total_price,0)-isnull(discount_amount,0) FROM TrSaleorHH 
												WHERE Order_id = @CLOUD_DOCNUMBR
												UNION
												SELECT 'PROMO BANK','PROMO BANK',discount_amount FROM TrSaleorHH 
												WHERE Order_id = @CLOUD_DOCNUMBR AND discount_amount > 0
			OPEN CSR_DOWNLOAD_PAYMENT
			FETCH NEXT FROM CSR_DOWNLOAD_PAYMENT INTO @paymentType,@ReferenceNo,@PaidAmount
			WHILE @@FETCH_STATUS = 0
			BEGIN
				SET @TotalPaidAmount = @TotalPaidAmount + @PaidAmount
				EXEC RETAIL_TRANSACTION.dbo.TRX_EY_SAVE_SALES_TRANSACTION_TENDER_TEMP 
				@StoreCode, @BusinessDay, @POSID, @SHIFTID, @COMPUTERIP, @paymentType, @PaidAmount, @PaidAmount, @ReferenceNo, @SYS_USR
				FETCH NEXT FROM CSR_DOWNLOAD_PAYMENT INTO @paymentType,@ReferenceNo,@PaidAmount
			END
			CLOSE CSR_DOWNLOAD_PAYMENT
			DEALLOCATE CSR_DOWNLOAD_PAYMENT

			DECLARE @DPP_TOTAL as decimal(19,5) = 0, @Items_TOTAL as int = 0, @Tax_TOTAL as decimal(19,5) = 0
			SET @DPP_TOTAL = (SELECT ISNULL(SUM(DPP),0) FROM RETAIL_TRANSACTION.dbo.TrSalesT
			WHERE COMPUTERIP = @COMPUTERIP
			AND TaxCode <> '0'
			AND Barcode NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItemDonation))
			SET @DPP_TOTAL = ISNULL(@DPP_TOTAL,0) 

			SELECT @Items_TOTAL = ISNULL(ItemCount,0),
			@Tax_TOTAL = ISNULL(Tax,0)
			FROM
			(
				SELECT ISNULL(SUM(Total),0) as Total,@DPP as DPP,ISNULL(SUM(Tax),0) as Tax,ISNULL(SUM(Subtotal),0) as Subtotal FROM RETAIL_TRANSACTION.dbo.TrSalesT
				WHERE COMPUTERIP = @COMPUTERIP
			)TOTAL
			LEFT JOIN
			(
				SELECT CEILING(ISNULL(SUM(Qty),0)) as ItemCount
				FROM RETAIL_TRANSACTION.dbo.TrSalesT WHERE COMPUTERIP = @COMPUTERIP 
				AND Barcode NOT IN (SELECT Barcode FROM RETAIL_MASTER.dbo.MItemReceiptDisallow)
			)ITEM_COUNT ON 1=1

			EXEC RETAIL_TRANSACTION.dbo.TRX_EY_POST_SALES_TRANSACTION
			@StoreCode,@BusinessDay,@POSID,@SHIFTID,@COMPUTERIP,@TotalPaidAmount,@DPP_TOTAL,
			@Tax_TOTAL,@TotalPaidAmount,@Items_TOTAL,@TotalPaidAmount,0,@TotalPaidAmount,
			@CLOUD_DOCNUMBR,'','',@SYS_USR,'','SALES TRANSACTION','',@LSMEMBERSHIP,@COMPANYID,@COMPANYPCID,
			0,0,0

			DECLARE @DOCNUMBR_POST VARCHAR(100) = (SELECT TOP 1 DOCNUMBR FROM RETAIL_TRANSACTION.dbo.TrSalesHH WHERE ORIDOCNUMBR = @CLOUD_DOCNUMBR ORDER BY CREATDT DESC)
			
			EXEC RETAIL_TRANSACTION.dbo.TRX_EY_POST_AGE_GENDER_CUSTOMER
			@StoreCode,
			@BusinessDay,
			@POSID,
			@SHIFTID,
			@SYS_USR,
			@DOCNUMBR_POST,
			'SALES TRANSACTION',
			'familymartshop.id'

			--UPDATE RETAIL_TRANSACTION.dbo.TrKitchenHH SET TRXSOURCE = RIGHT(@CLOUD_DOCNUMBR,1) WHERE DOCNUMBR = @DOCNUMBR_POST

			UPDATE SALEOR_DOWNLOAD SET POS_DOCNUMBR = @DOCNUMBR_POST, StoreCode = @StoreCode, Businessday = @Businessday, 
			POSID = @POSID, SHIFTID = @SHIFTID, 
			IsDownloadToPOS = 0, LastDownloadDT = GETDATE(), LastDownloadRC = '200',LastDownloadRM = 'SUCCESS',
			MDFUSRID = @COMPUTERIP,MODIFDT = GETDATE()
			WHERE Order_Id = @CLOUD_DOCNUMBR

			DELETE FROM RETAIL_TRANSACTION.dbo.TrKitchenHH WHERE DOCNUMBR = @DOCNUMBR_POST

			SELECT @DOCNUMBR_POST
		COMMIT
	END TRY
	BEGIN CATCH
		IF @@trancount  > 0
		BEGIN
			ROLLBACK
		END
		DECLARE @ERROR AS VARCHAR(MAX)
		SET @ERROR = ERROR_MESSAGE()
		RAISERROR(@ERROR,16,1)
		
		CLOSE CSR_DOWNLOAD
		DEALLOCATE CSR_DOWNLOAD
		CLOSE CSR_DOWNLOAD_PAYMENT
		DEALLOCATE CSR_DOWNLOAD_PAYMENT
	END CATCH
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	
	UPDATE SALEOR_DOWNLOAD SET 
	LastDownloadRC = '404',LastDownloadRM = @ERROR_ALL,
	MDFUSRID = @COMPUTERIP,MODIFDT = GETDATE()
	WHERE Order_Id = @CLOUD_DOCNUMBR

	RAISERROR(@ERROR_ALL,16,1)
END CATCH
GO


CREATE PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_POS
@StoreCode varchar(100),
@WHERECOND varchar(8000)
as
set nocount on
BEGIN TRY
	EXEC('
		SELECT [Order ID],[Order DT],[POS Receipt],[Businessday],[Shift],[Channel Id],
		[Payment],[Total],[Customer ID],[Customer Name],[Customer Email],[Customer Address],
		[Sent to],[Sent to phone],[Order Status],[Order Type],
		[POS DL],[POS DL DT],[RC],[RM]
		FROM
		(
			SELECT SALEOR_DOWNLOAD.order_id as [Order ID],
			POS_DOCNUMBR as [POS Receipt],
			Businessday as [Businessday],
			SHIFTID as [Shift],
			IsDownloadToPOS as [POS DL],
			LastDownloadDT as [POS DL DT],
			LastDownloadRC as [RC],
			LastDownloadRM as [RM],
			local_id as [Channel Id],
			ordered_at as [Order DT],
			payment_method as [Payment],
			total_price as [Total],
			customer_info_id as [Customer ID],
			customer_info_name as [Customer Name],
			customer_info_email as [Customer Email],
			customer_address_address_1 as [Customer Address],
			customer_address_name as [Sent to],
			customer_address_phone as [Sent to phone],
			order_status as [Order Status],
			order_type as [Order Type]
			FROM SALEOR_DOWNLOAD
			LEFT JOIN TrSaleorHH ON SALEOR_DOWNLOAD.order_id = TrSaleorHH.order_id
			WHERE TrSaleorHH.outlet_id = '''+@StoreCode+'''
		)SALES_ECOM
	' + @WHERECOND
	+ ' ' + 'ORDER BY [Order ID] DESC')
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_POS_DETAIL
@Order_ID varchar(100),
@StoreCode varchar(100)
as
set nocount on
BEGIN TRY
	IF EXISTS (SELECT '' FROM SALEOR_DOWNLOAD WHERE order_id = @Order_ID AND StoreCode = @StoreCode AND POS_DOCNUMBR <> '')
	BEGIN
		SELECT [Order ID],[POS Receipt],[Businessday],[Shift],[Channel Id],
			[Order DT],[Payment],[Total],[Customer ID],[Customer Name],[Customer Email],[Customer Address],
			[Sent to],[Sent to phone],[Order Status],[Order Type],
			[POS DL],[POS DL DT],[RC],[RM]
		FROM
		(
			SELECT SALEOR_DOWNLOAD.order_id as [Order ID],
			POS_DOCNUMBR as [POS Receipt],
			Businessday as [Businessday],
			SHIFTID as [Shift],
			IsDownloadToPOS as [POS DL],
			LastDownloadDT as [POS DL DT],
			LastDownloadRC as [RC],
			LastDownloadRM as [RM],
			local_id as [Channel Id],
			ordered_at as [Order DT],
			payment_method as [Payment],
			ISNULL(total_price,0) as [Total],
			customer_info_id as [Customer ID],
			customer_info_name as [Customer Name],
			ISNULL(customer_info_email,'') as [Customer Email],
			customer_address_address_1 as [Customer Address],
			customer_address_name as [Sent to],
			customer_address_phone as [Sent to phone],
			order_status as [Order Status],
			order_type as [Order Type]
			FROM SALEOR_DOWNLOAD
			LEFT JOIN TrSaleorHH ON SALEOR_DOWNLOAD.order_id = TrSaleorHH.order_id
			WHERE SALEOR_DOWNLOAD.order_id = @Order_ID
		)SALES

		DECLARE @POSReceiptNo VARCHAR(100) = (SELECT TOP 1 POS_DOCNUMBR FROM SALEOR_DOWNLOAD WHERE Order_id = @order_id)
		SELECT Barcode as [Barcode],ItemDescriptionLong as [Item Description],UnitPrice as [Unit Price], Disc as [Disc],
		Qty as [Qty Order],QtyReturned*-1 as [Qty Returned],Qty-QtyReturned as [Qty Total],
		(Qty-QtyReturned)*(UnitPrice-disc) as [Total Amount] 
		FROM RETAIL_TRANSACTION.dbo.TrSalesDH WHERE DOCNUMBR = @POSReceiptNo

		SELECT TenderID as [Tender ID], ReferenceNo as [Reference No],TrSalesTenderHH.TenderedAmount as [Paid Amount],ReturnedAmount*-1 as [Returned Amount],
		ISNULL(TrSalesTenderHH.TenderedAmount,0) - ISNULL(ReturnedAmount,0) as Total
		FROM RETAIL_TRANSACTION.dbo.TrSalesTenderHH
		LEFT JOIN RETAIL_TRANSACTION.dbo.TrSalesHH ON TrSalesTenderHH.DOCNUMBR = TrSalesHH.DOCNUMBR
		LEFT JOIN TrSaleorHH ON TrSaleorHH.order_id = TrSalesHH.ORIDOCNUMBR
		WHERE 
		outlet_id = @StoreCode AND
		TrSaleorHH.order_id = @order_id
		AND TOTAL>0
		--UNION ALL
		--SELECT TenderID as [Tender ID], ReferenceNo as [Reference No],TrSalesTenderHH.TenderedAmount as [Paid Amount],ReturnedAmount*-1 as [Returned Amount] FROM RETAIL_TRANSACTION.dbo.TrSalesTenderHH
		--LEFT JOIN RETAIL_TRANSACTION.dbo.TrSalesHH X ON TrSalesTenderHH.DOCNUMBR = X.DOCNUMBR
		--LEFT JOIN RETAIL_TRANSACTION.dbo.TrSalesHH Y ON X.RETURNDOCNUMBR = Y.DOCNUMBR
		--LEFT JOIN TrSaleorHH ON TrSaleorHH.order_id = Y.ORIDOCNUMBR
		--WHERE 
		--outlet_id = @StoreCode AND
		--TrSaleorHH.order_id = @order_id
		--AND TrSalesTenderHH.TenderedAmount>0

		SELECT Order_status as [Status],Order_DT as [Status Date] FROM SALEOR_ORDER_STATUS WHERE order_id = @Order_ID

		SELECT ISNULL(SUM(ReturnedAmount*-1),0) as ReturnedAmount
		FROM RETAIL_TRANSACTION.dbo.TrSalesTenderHH
		LEFT JOIN RETAIL_TRANSACTION.dbo.TrSalesHH ON TrSalesTenderHH.DOCNUMBR = TrSalesHH.DOCNUMBR
		LEFT JOIN TrSaleorHH ON TrSaleorHH.order_id = TrSalesHH.ORIDOCNUMBR
		WHERE 
		outlet_id = @StoreCode AND
		TrSaleorHH.order_id = @order_id
		AND TOTAL>0

		SELECT ISNULL(SUM(ReturnedAmount),0) as ReturnNoteAmount
		FROM RETAIL_TRANSACTION.dbo.TrSalesTenderHH
		LEFT JOIN RETAIL_TRANSACTION.dbo.TrSalesHH ON TrSalesTenderHH.DOCNUMBR = TrSalesHH.DOCNUMBR
		LEFT JOIN TrSaleorHH ON TrSaleorHH.order_id = TrSalesHH.ORIDOCNUMBR
		WHERE 
		outlet_id = @StoreCode AND
		TrSaleorHH.order_id = @order_id
		AND TOTAL>0
		ANd TenderID <> 'PROMO BANK'
	END
	ELSE
	BEGIN
		SELECT [Order ID],[POS Receipt],[Businessday],[Shift],[Channel Id],
		[Order DT],[Payment],[Total],[Customer ID],[Customer Name],[Customer Email],[Customer Address],
		[Sent to],[Sent to phone],[Order Status],[Order Type],
		[POS DL],[POS DL DT],[RC],[RM]
		FROM
		(
			SELECT SALEOR_DOWNLOAD.order_id as [Order ID],
			POS_DOCNUMBR as [POS Receipt],
			Businessday as [Businessday],
			SHIFTID as [Shift],
			IsDownloadToPOS as [POS DL],
			LastDownloadDT as [POS DL DT],
			LastDownloadRC as [RC],
			LastDownloadRM as [RM],
			local_id as [Channel Id],
			ordered_at as [Order DT],
			payment_method as [Payment],
			ISNULL(total_price,0) as [Total],
			customer_info_id as [Customer ID],
			customer_info_name as [Customer Name],
			ISNULL(customer_info_email,'') as [Customer Email],
			customer_address_address_1 as [Customer Address],
			customer_address_name as [Sent to],
			customer_address_phone as [Sent to phone],
			order_status as [Order Status],
			order_type as [Order Type]
			FROM SALEOR_DOWNLOAD
			LEFT JOIN TrSaleorHH ON SALEOR_DOWNLOAD.order_id = TrSaleorHH.order_id
			WHERE SALEOR_DOWNLOAD.order_id = @Order_ID
		)SALES


		SELECT variant_sku as Barcode,ItemDescriptionLong as [Item Description],price as [Unit Price],sale_price_voucher as [Disc], 
		qty as [Qty Order], 0 as [Qty Returned], qty as [Qty Total],
		total_price_after_voucher as [Total Amount] 
		FROM TrSaleorDH 
		LEFT JOIN RETAIL_MASTER.dbo.MItem ON TrSaleorDH.variant_sku = MItem.Barcode
		WHERE order_id = @Order_ID
		ORDER BY TrSaleorDH.CREATDT ASC


		SELECT payment_method_POS as [Tender ID], payment_method as [Reference No],total_price-discount_amount as [Paid Amount],0 as [Returned Amount], 
		total_price-discount_amount as [Total]
		FROM TrSaleorHH WHERE order_id = @Order_ID 
		UNION
		SELECT 'PROMO BANK','' as [Reference No],discount_amount as [Paid Amount],0 as [Returned Amount], 
		discount_amount as [Total]
		FROM TrSaleorHH WHERE order_id = @Order_ID
		AND discount_amount>0
	
		SELECT Order_status as [Status],Order_DT as [Status Date] FROM SALEOR_ORDER_STATUS WHERE order_id = @Order_ID

		SELECT 0 as ReturnedAmount

		SELECT 0 as ReturnNoteAmount
	END
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO


CREATE PROC RETAIL_CLOUD_EY_SALEOR_DISPLAY_ORDER_ORI_DETAIL
@Order_ID varchar(100),
@StoreCode varchar(100)
as
set nocount on
BEGIN TRY
	SELECT [Order ID],[POS Receipt],[Businessday],[Shift],[Channel Id],
		[Order DT],[Payment],[Total],[Customer ID],[Customer Name],[Customer Email],[Customer Address],
		[Sent to],[Sent to phone],[Order Status],[Order Type],
		[POS DL],[POS DL DT],[RC],[RM]
	FROM
	(
		SELECT SALEOR_DOWNLOAD.order_id as [Order ID],
		POS_DOCNUMBR as [POS Receipt],
		Businessday as [Businessday],
		SHIFTID as [Shift],
		IsDownloadToPOS as [POS DL],
		LastDownloadDT as [POS DL DT],
		LastDownloadRC as [RC],
		LastDownloadRM as [RM],
		local_id as [Channel Id],
		ordered_at as [Order DT],
		payment_method as [Payment],
		ISNULL(total_price,0) as [Total],
		customer_info_id as [Customer ID],
		customer_info_name as [Customer Name],
		ISNULL(customer_info_email,'') as [Customer Email],
		customer_address_address_1 as [Customer Address],
		customer_address_name as [Sent to],
		customer_address_phone as [Sent to phone],
		order_status as [Order Status],
		order_type as [Order Type]
		FROM SALEOR_DOWNLOAD
		LEFT JOIN TrSaleorHH ON SALEOR_DOWNLOAD.order_id = TrSaleorHH.order_id
		WHERE SALEOR_DOWNLOAD.order_id = @Order_ID
	)SALES


	SELECT variant_sku as Barcode,ItemDescriptionLong as [Item Description],price as [Unit Price],sale_price_voucher as [Disc], 
	qty as [Qty Order], 0 as [Qty Returned], qty as [Qty Total],
	total_price_after_voucher as [Total Amount] 
	FROM TrSaleorDH 
	LEFT JOIN RETAIL_MASTER.dbo.MItem ON TrSaleorDH.variant_sku = MItem.Barcode
	WHERE order_id = @Order_ID
	ORDER BY TrSaleorDH.CREATDT ASC


	SELECT payment_method_POS as [Tender ID], payment_method as [Reference No],total_price-discount_amount as [Paid Amount],0 as [Returned Amount], 
	total_price-discount_amount as [Total]
	FROM TrSaleorHH WHERE order_id = @Order_ID 
	UNION
	SELECT 'PROMO BANK','' as [Reference No],discount_amount as [Paid Amount],0 as [Returned Amount], 
	discount_amount as [Total]
	FROM TrSaleorHH WHERE order_id = @Order_ID
	AND discount_amount>0
	
	SELECT Order_status as [Status],Order_DT as [Status Date] FROM SALEOR_ORDER_STATUS WHERE order_id = @Order_ID

	SELECT 0 as ReturnedAmount

	SELECT 0 as ReturnNoteAmount

END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO

---------------------------------------------------FAMI APPS------------------------------------------------------
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_ORDER_ALL')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_ORDER_ALL
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_CHECK_NOTIF_POS')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_CHECK_NOTIF_POS
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_DELETE_NOTIF_POS')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_DELETE_NOTIF_POS
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_SELECTED_ORDER')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_SELECTED_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_FINISH_ORDER')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_FINISH_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_CHECK_ODER_REQUEST_TO_KITCHEN')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_CHECK_ODER_REQUEST_TO_KITCHEN
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_ORDER_SEND_TO_KITCHEN')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_ORDER_SEND_TO_KITCHEN
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_REQUEST_PICKUP_DELIVERY_ORDER')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_REQUEST_PICKUP_DELIVERY_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_REQUEST_PICKUP_DELIVERY_ORDER')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_REQUEST_PICKUP_DELIVERY_ORDER
GO
IF EXISTS (SELECT '' FROM SYSOBJECTS WHERE NAME = 'RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_CALL_CSO')
DROP PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_CALL_CSO
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_DELETE_NOTIF_POS
@POSID VARCHAR(100)
as
set nocount on
BEGIN TRY
	DELETE FROM FAMI_APPS.dbo.famiordernotif --WHERE POSID = @POSID
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_CHECK_NOTIF_POS
@POSID VARCHAR(100)
as
set nocount on
BEGIN TRY
	SELECT POSID FROM FAMI_APPS.dbo.famiordernotif WHERE POSID = @POSID
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_ORDER_ALL
@StoreCode varchar(100),
@WHERECOND VARCHAR(8000)
as
set nocount on
BEGIN TRY
	DECLARE @DAYSTOVIEW AS VARCHAR(100) = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'FAMIAPPS_DISPLAY_ORDER_DAYS')
	SET @DAYSTOVIEW = ISNULL(@DAYSTOVIEW,30)

	EXEC('
	SELECT [Order ID],[Order Date],[Ready Time],[Queue No],[Is GRO],[Order Type],[Delivery by],[No Resi],[Customer],
	[Status Code],[Status Message],
	[Order Amount],[Is Returned],[Last Updated],[Call CSO]
	FROM
	(
		SELECT famiorderS2HH.OrderID as [Order ID],CONVERT(DATE,ORDERDT,103) as [Order Date],OrderType as [Order Type],famiorderS2HH.ISGROCERY as [Is GRO],
		CASE WHEN ShippingProvider = ''null null'' THEN ''''
		ELSE
			ShippingProvider 
		END as [Delivery by],
		ShippingReferenceNo as [No Resi],
		Total_Tendered as [Order Amount],
		CASE WHEN ISNULL(famiorderS2FH.RTN_JSON,'''') = '''' THEN ''0'' ELSE ''1'' END as [Is Returned],
		CASE WHEN OrderType = ''delivery'' THEN
			CASE 
				WHEN OrderSts = ''4'' THEN ''undone''
				WHEN OrderSts = ''3'' THEN ''undone''
				WHEN OrderSts = ''2'' THEN ''undone''
				WHEN OrderSts = ''1'' THEN ''done''
				WHEN OrderSts = ''0'' THEN ''canceled''
			END
		WHEN OrderType = ''pickup'' THEN
			CASE 
				WHEN OrderSts = ''3'' THEN ''undone''
				WHEN OrderSts = ''2'' THEN ''undone''
				WHEN OrderSts = ''1'' THEN ''done''
				WHEN OrderSts = ''0'' THEN ''canceled''
			END
		WHEN OrderType = ''selfservice'' THEN
			CASE 
				WHEN OrderSts = ''2'' THEN ''undone''
				WHEN OrderSts = ''1'' THEN ''done''
			END
		END as [Status Code],
		CASE WHEN OrderType = ''delivery'' THEN
			CASE 
				WHEN OrderSts = ''4'' THEN ''pending''
				WHEN OrderSts = ''3'' THEN ''diproses''
				WHEN OrderSts = ''2'' THEN ''dikirim''
				WHEN OrderSts = ''1'' THEN ''done''
				WHEN OrderSts = ''0'' THEN ''batal''
			END
		WHEN OrderType = ''pickup'' THEN
			CASE 
				WHEN OrderSts = ''3'' THEN ''pending''
				WHEN OrderSts = ''2'' THEN ''pickup''
				WHEN OrderSts = ''1'' THEN ''done''
				WHEN OrderSts = ''0'' THEN ''batal''
			END
		WHEN OrderType = ''selfservice'' THEN
			CASE 
				WHEN OrderSts = ''2'' THEN ''pending''
				WHEN OrderSts = ''1'' THEN ''done''
			END
		END as [Status Message],
		ORDERDT as [Last Updated],
		CASE 
		WHEN OrderType = ''pickup'' THEN
			LEFT(CONVERT(VARCHAR,CONVERT(TIME,PickUpTime,108)),5) 
		WHEN OrderType = ''delivery'' AND ShippingProvider like ''%INSTANT%'' THEN
			FORMAT(DATEADD(minute,2,ORDERDT),''HH:mm'')
		WHEN OrderType = ''delivery'' AND ShippingProvider like ''%SAME_DAY%'' THEN
			''99:99''
		WHEN OrderType = ''delivery'' AND ShippingProvider like ''%LALA%'' THEN
			FORMAT(DATEADD(minute,0,ORDERDT),''HH:mm'')
		ELSE
			''99:99''
		END
		as [Ready Time],
		CASE WHEN famiorderS2HH.QUEUENO = '''' THEN ''XXX'' 
		ELSE
		famiorderS2HH.QUEUENO
		END as [Queue No],
		[Phone] as [Phone],
		account_name + RIGHT(Phone,4) as [Customer],
		isCallCSO as [Call CSO]
		FROM FAMI_APPS.dbo.famiorderS2HH
		LEFT JOIN FAMI_APPS.dbo.famiorderS2FH ON famiorderS2HH.OrderID = famiorderS2FH.OrderID
		WHERE DATEDIFF(day,ORDERDT,GETDATE()) < '+@DAYSTOVIEW+'
		AND StoreCode = '''+@StoreCode+'''
	)SALES
	'+@WHERECOND+'
	ORDER BY [Order Date] ASC,[Ready Time] ASC')
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO


CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_SELECTED_ORDER
@OrderID varchar(100)
as
set nocount on
BEGIN TRY
	SELECT QUEUENO,PickUpTime,OrderType,ShippingProvider,ORDERDT,RCRQPICKUP,
	ISNULL(ShippingReferenceNo,'') as ShippingReferenceNo,TOTAL,OrderSts,RCKTCS2,
	IsCALLCSO,OrderSts,ISNULL(RTNJSON,'') as RTNJSON, shippingTracking,KTCJSONS2
	FROM FAMI_APPS.dbo.famiorderS2HH WHERE OrderID = @OrderID

	SELECT famiorderS2DH.Barcode,ItemDescriptionLong as [Item Description],
	--UnitPrice as [Price],
	Qty,
	--DISC as [Disc],TOTAL as [Total],
	ISNULL(NOTE,'') + 
	CASE WHEN ISNULL(NOTE,'') <> '' AND (ISNULL(ADDITIONAL,'') <> '' OR ISNULL(TOPPING,'') <> '') THEN ', ' ELSE '' END 
	+ ISNULL(ADDITIONAL,'') + 
	CASE WHEN ISNULL(ADDITIONAL,'') <> '' AND ISNULL(TOPPING,'') <> ''  THEN ', ' ELSE '' END 
	+ ISNULL(TOPPING,'') as [Order Notes],
	CASE WHEN ISNULL(MItemKitchenModule.Barcode,'') = '' THEN
		'1'
	ELSE
		'0'
	END as [Is GRO]
	FROM FAMI_APPS.dbo.famiorderS2DH 
	LEFT JOIN RETAIL_MASTER.dbo.MItemKitchenModule ON famiorderS2DH.Barcode = MItemKitchenModule.Barcode
	WHERE OrderID = @OrderID
	ORDER BY [Is GRO],[ItemDescriptionLong]

	SELECT * FROM FAMI_APPS.dbo.famiorderAddonS2DH WHERE OrderID = @OrderID
	SELECT * FROM FAMI_APPS.dbo.famiorderS2PH WHERE OrderID = @OrderID

	SELECT MItemSuppliesS2Apps.Barcode,Img,MItemSuppliesS2Apps.ItemDescription as [Item Description],
	'-' as [Minus],
	ISNULL(famiorderS2SuppliesDH.Qty,0) as Qty,
	'+' as [Plus]
	FROM RETAIL_MASTER.dbo.MItemSuppliesS2Apps
	LEFT JOIN RETAIL_MASTER.dbo.MItemTOPPic ON MItemSuppliesS2Apps.Barcode = MItemTOPPic.Barcode
	LEFT JOIN FAMI_APPS.dbo.famiorderS2SuppliesDH
	ON MItemSuppliesS2Apps.Barcode = famiorderS2SuppliesDH.Barcode
	AND famiorderS2SuppliesDH.OrderID = @OrderID

	SELECT OrderID,IsConfirmed FROM FAMI_APPS.dbo.famiorderS2SuppliesHH WHERE OrderID = @OrderID

	SELECT old_barcode, 
	(SELECT ItemDescriptionLong FROM RETAIL_MASTER.dbo.MItem WHERE Barcode = old_barcode) as old_Item,
	New_barcode, 
	(SELECT ItemDescriptionLong FROM RETAIL_MASTER.dbo.MItem WHERE Barcode = New_barcode) as new_Item,
	new_qty as Qty
	FROM FAMI_APPS.dbo.famiorders2subsH WHERE OrderID = @OrderID
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_FINISH_ORDER
@OrderID varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF EXISTS (SELECT '' FROM FAMI_APPS.dbo.famiorderS2HH WHERE OrderID = @OrderID AND OrderSts = 1)
		BEGIN
			RAISERROR('Order sudah terselesaikan sebelumnya.',16,1)
		END
		ELSE
		BEGIN
			UPDATE FAMI_APPS.dbo.famiorderS2HH SET OrderSts = 1,MODIFDT = GETDATE() WHERE OrderID = @OrderID
		END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_CHECK_ODER_REQUEST_TO_KITCHEN
@OrderID varchar(100),
@StoreCode varchar(100)
as
set nocount on
BEGIN TRY
	declare @limit_min int = -30
	declare @limit_max int = 30

	IF EXISTS 
	(
		SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME'
	)
	BEGIN
		SET @limit_min = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME') * -1
		SET @limit_max = (SELECT SETUPVALUE FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID  = 'KITCHEN_LIMIT_TIME')
	END
	ELSE
	BEGIN
		SET @limit_min = -30
		SET @limit_max = 30
	END

	EXEC('
		SELECT OrderID,KTCJSONS2,OrderType,ISNULL(QUEUENO,'''') as QUEUENO,account_name FROM FAMI_APPS.dbo.famiorderS2HH where ISNULL(QUEUENO,'''') = '''' 
		AND OrderType = ''delivery'' AND StoreCode = '''+@StoreCode+'''
		AND OrderID = '''+@OrderID+'''
		UNION
		SELECT OrderID,KTCJSONS2,OrderType,ISNULL(QUEUENO,'''') as QUEUENO,account_name FROM FAMI_APPS.dbo.famiorderS2HH 
		where ISNULL(QUEUENO,'''') = '''' AND OrderType = ''pickup''  
		AND SUBSTRING(CONVERT(VARCHAR,GETDATE(),108),1,5) BETWEEN 
		SUBSTRING(CONVERT(VARCHAR,DATEADD(MINUTE,'+@limit_min+',CONVERT(TIME,PickUpTime,108))),1,5) AND
		SUBSTRING(CONVERT(VARCHAR,DATEADD(MINUTE,'+@limit_max+',CONVERT(TIME,PickUpTime,108))),1,5)
		AND StoreCode = '''+@StoreCode+'''
		AND OrderID = '''+@OrderID+'''
		UNION
		SELECT OrderID,KTCJSONS2,OrderType,ISNULL(QUEUENO,'''') as QUEUENO,account_name FROM FAMI_APPS.dbo.famiorderS2HH 
		where ISNULL(QUEUENO,'''') = '''' AND OrderType = ''pickup'' 
		AND CONVERT(varchar,ORDERDT,112) + REPLACE(CONVERT(varchar,PickUpTime,108),'':'','''') < CONVERT(varchar,GETDATE(),112) + REPLACE(CONVERT(varchar,GETDATE(),108),'':'','''')
		AND StoreCode = '''+@StoreCode+''' AND OrderID = '''+@OrderID+'''
		UNION
		SELECT OrderID,KTCJSONS2,OrderType,ISNULL(QUEUENO,'''') as QUEUENO,account_name FROM FAMI_APPS.dbo.famiorderS2HH 
		WHERE ISNULL(QUEUENO,'''') <> '''' AND RCKTCS2 NOT IN (''0'',''200'')
		AND OrderID = '''+@OrderID+'''
	')
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_ORDER_SEND_TO_KITCHEN
@StoreCode VARCHAR(100),
@OrderID VARCHAR(100),
@QUEUENO VARCHAR(100),
@RC VARCHAR(10),
@RM VARCHAR(8000)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF EXISTS (SELECT '' FROM FAMI_APPS.dbo.famiorderS2HH WHERE OrderID  = @OrderID AND StoreCode = @StoreCode AND QUEUENO <> '')
		BEGIN
			UPDATE FAMI_APPS.dbo.famiorderS2HH SET RCKTCS2 = @RC, RCKTCMSGS2 = @RM, RCKTCDTS2 = GETDATE()
			WHERE OrderID  = @OrderID AND StoreCode = @StoreCode
		END 
		ELSE
		BEGIN
			UPDATE FAMI_APPS.dbo.famiorderS2HH SET QUEUENO = @QUEUENO,RCKTCS2 = @RC, RCKTCMSGS2 = @RM, RCKTCDTS2 = GETDATE()
			WHERE OrderID  = @OrderID AND StoreCode = @StoreCode
		END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_DISPLAY_REQUEST_PICKUP_DELIVERY_ORDER
@OrderID varchar(100),
@StoreCode varchar(100)
as
set nocount on
BEGIN TRY
	SELECT OrderID,Shipping_reference_no_tarif,ShippingProvider FROM FAMI_APPS.dbo.famiorderS2HH where 
	RCRQPICKUP <> '200' AND OrderType = 'delivery' AND StoreCode = @StoreCode
	AND OrderID = @OrderID
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_REQUEST_PICKUP_DELIVERY_ORDER
@StoreCode varchar(100),
@OrderID varchar(100),
@RCRQPICKUP varchar(10),
@RMRQPICKUP varchar(8000),
@JSONRQPICKUP varchar(8000),
@order_no_resi varchar(100),
@order_live_tracking_url varchar(8000),
@order_status varchar(100)
as
set nocount on
BEGIN TRY
BEGIN TRAN
	UPDATE FAMI_APPS.dbo.famiorderS2HH 
	SET RCRQPICKUP = @RCRQPICKUP,
	RMRQPICKUP = @RMRQPICKUP,
	DTRQPICKUP = GETDATE(),
	JSONRQPICKUP = @JSONRQPICKUP,
	ShippingReferenceNo = @order_no_resi,
	ShippingTracking =  @order_live_tracking_url,
	ShippingDesc =  @order_status
	WHERE OrderID = @OrderID
	AND StoreCode = @StoreCode
COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMI_APPS_UPDATE_CALL_CSO
@StoreCode VARCHAR(100),
@OrderID VARCHAR(100),
@isCALLCSO VARCHAR(10),
@RC VARCHAR(10),
@RM VARCHAR(8000)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		UPDATE FAMI_APPS.dbo.famiorderS2HH SET 
		isCALLCSO = @isCALLCSO,CALLCSODT = GETDATE(),RCCALLCSO = @RC,RMCALLCSO = @RM
		WHERE OrderID = @OrderID AND StoreCode = @StoreCode
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO


CREATE PROC RETAIL_CLOUD_EY_FAMIAPPS_GENERATE_ORDER_KITCHEN_JSON
@OrderID VARCHAR(100),
@StoreCode VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		DECLARE @JSONKITCHEN AS VARCHAR(8000) =  ''
		SET @JSONKITCHEN = (SELECT KTCJSONS2 FROM FAMI_APPS.dbo.famiorderS2HH WHERE OrderID = @OrderID AND StoreCode = @StoreCode)
		IF ISNULL(@JSONKITCHEN,'')=''
		BEGIN
			SELECT UnitPrice as Price,ItemCode as ArticleNo, 
			RTRIM(ISNULL(ADDITIONAL,'') + CHAR(13) + CHAR(10) + ISNULL(TOPPING,'')) as OrderNotes,
			ItemDescriptionLong as ArticleName,ROW_NUMBER() OVER(ORDER BY LNITMSEQ ASC) as OrderLineNo,QTY as Qty
			FROM FAMI_APPS.dbo.famiorderS2DH WHERE OrderID = @OrderID
		END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMIAPPS_UPDATE_ORDER_KITCHEN_JSON
@OrderID VARCHAR(100),
@KTCJSONS2 VARCHAR(8000),
@StoreCode varchar(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		UPDATE famiorderS2HH SET KTCJSONS2 = @KTCJSONS2 WHERE OrderID  = @OrderID AND StoreCode = @StoreCode
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMIAPPS_ADD_SUPPLIES_ITEM
@OrderID VARCHAR(100),
@Barcode VARCHAR(100),
@Qty DECIMAL(17,5),
@SYS_USR VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF EXISTS (SELECT '' FROM FAMI_APPS.dbo.famiorderS2SuppliesDH WHERE OrderID = @OrderID AND Barcode = @Barcode)
		BEGIN
			UPDATE FAMI_APPS.dbo.famiorderS2SuppliesDH SET
			Qty = @Qty, MDFUSRID = @SYS_USR, MODIFDT = GETDATE() WHERE OrderID = @OrderID AND Barcode = @Barcode
		END
		ELSE
		BEGIN
			INSERT INTO FAMI_APPS.dbo.famiorderS2SuppliesDH
			(OrderID,Barcode,Qty,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
			VALUES 
			(@OrderID,@Barcode,@Qty,@SYS_USR,GETDATE(),'','1900-01-01')
		END
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMIAPPS_CONFIRMED_SUPPLIES_ITEM
@OrderID VARCHAR(100),
@IsConfirmed int,
@JSONSUPP VARCHAR(8000),
@SYS_USR VARCHAR(100)
as
set nocount on
BEGIN TRY
	BEGIN TRAN
		IF EXISTS (SELECT '' FROM FAMI_APPS.dbo.famiorderS2SuppliesHH WHERE OrderID = @OrderID)
		BEGIN
			UPDATE FAMI_APPS.dbo.famiorderS2SuppliesHH SET
			IsConfirmed = @IsConfirmed, MDFUSRID = @SYS_USR, MODIFDT = GETDATE() WHERE OrderID = @OrderID
		END
		ELSE
		BEGIN
			INSERT INTO FAMI_APPS.dbo.famiorderS2SuppliesHH
			(OrderID,IsConfirmed,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
			VALUES 
			(@OrderID,@IsConfirmed,@SYS_USR,GETDATE(),'','1900-01-01')
		END

		UPDATE FAMI_APPS.dbo.famiorderS2FH SET SUPLY_JSON = @JSONSUPP WHERE OrderID = @OrderID
	COMMIT
END TRY
BEGIN CATCH
	ROLLBACK
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO

CREATE PROC RETAIL_CLOUD_EY_FAMIAPPS_DISPLAY_SUPPLIES_ITEM
@OrderID VARCHAR(100)
as
set nocount on
BEGIN TRY
	SELECT OrderID,Barcode,Qty FROM FAMI_APPS.dbo.famiorderS2SuppliesDH WHERE OrderID = @OrderID
	AND Qty > 0
END TRY
BEGIN CATCH
	DECLARE @ERROR_ALL AS VARCHAR(MAX)
	SET @ERROR_ALL = ERROR_MESSAGE()
	RAISERROR(@ERROR_ALL,16,1)
END CATCH	
set nocount off
GO


------------------------------------------------------------------------------
IF EXISTS (SELECT '' FROM RETAIL_SYSTEMS.dbo.MSetup WHERE SETUPID = 'V_RETAIL_CLOUD')
BEGIN
	UPDATE RETAIL_SYSTEMS.dbo.MSetup SET SETUPVALUE = 'V.51.0' WHERE SETUPID = 'V_RETAIL_CLOUD'
END
ELSE
BEGIN
	INSERT INTO RETAIL_SYSTEMS.dbo.MSetup(SETUPID,SETUPVALUE,CRUSRID,CREATDT,MDFUSRID,MODIFDT)
	VALUES ('V_RETAIL_CLOUD','V.51.0','SYSTEMS',GETDATE(),'','1900-01-01')
END
------------------------------------------------------------------------------
Editor is loading...
Leave a Comment