USP_DATAFORMTEMPLATE_EDIT_SALESORDERTAXEXEMPT
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ISTAXEXEMPT | bit | IN | |
@SALESORDERTAXEXEMPTREASONCODEID | uniqueidentifier | IN | |
@COMMENTS | nvarchar(255) | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SALESORDERTAXEXEMPT
(
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@ISTAXEXEMPT bit,
@SALESORDERTAXEXEMPTREASONCODEID uniqueidentifier,
@COMMENTS nvarchar(255)
)
as
set nocount on;
if @CHANGEAGENTID is null begin
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
end
declare @CURRENTDATE datetime = getdate();
begin try
declare @ISCURRENTLYEXEMPT bit = dbo.UFN_SALESORDER_ISTAXEXEMPT(@ID);
declare @ISCOMPLETEORCANCELLED bit = 0;
set @ISTAXEXEMPT = isnull(@ISTAXEXEMPT, 0);
select
@ISCOMPLETEORCANCELLED =
case
when SALESORDER.STATUSCODE in (1,5) then 1 -- Complete, Cancelled
else 0
end
from dbo.SALESORDER
where ID = @ID;
if @ISCOMPLETEORCANCELLED = 1 and @ISCURRENTLYEXEMPT <> @ISTAXEXEMPT begin
raiserror('BBERR_SALESORDERTAXEXEMPTINFOEDIT_CANNOTCHANGEWHENCOMPLETE', 13, 1);
end
if @ISTAXEXEMPT = 0 begin
if @ISCURRENTLYEXEMPT = 1 begin
exec dbo.USP_SALESORDERTAXEXEMPTINFO_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
exec dbo.USP_SALESORDER_CALCULATETAXES @ID, @CHANGEAGENTID;
end
end else begin
if @ISCURRENTLYEXEMPT = 0 begin
insert into dbo.SALESORDERTAXEXEMPTINFO (
ID,
SALESORDERTAXEXEMPTREASONCODEID,
COMMENTS,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
) values (
@ID,
@SALESORDERTAXEXEMPTREASONCODEID,
@COMMENTS,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
);
-- Delete existing taxes on the order
declare @CONTEXTCACHE varbinary(128);
set @CONTEXTCACHE = CONTEXT_INFO();
set CONTEXT_INFO @CHANGEAGENTID;
delete from dbo.SALESORDERITEMTAX
where TAXITEMID in (select ID from dbo.SALESORDERITEM where SALESORDERID = @ID and TYPECODE = 4);
if @@rowcount > 0 begin
delete from dbo.SALESORDERITEM
where SALESORDERID = @ID and TYPECODE = 4; -- Tax
end
if @CONTEXTCACHE is not null begin
set CONTEXT_INFO @CONTEXTCACHE;
end
end else begin
update dbo.SALESORDERTAXEXEMPTINFO set
SALESORDERTAXEXEMPTREASONCODEID = @SALESORDERTAXEXEMPTREASONCODEID,
COMMENTS = @COMMENTS,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID;
end
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;