340 lines
9.3 KiB
Text
340 lines
9.3 KiB
Text
SET ANSI_NULLS OFF
|
||
GO
|
||
SET QUOTED_IDENTIFIER OFF
|
||
GO
|
||
SET NOCOUNT ON
|
||
GO
|
||
PRINT 'Begin Jeeves_Esales_CreateOrder'
|
||
GO
|
||
PRINT 'Begin Jeeves_Esales_CreateOrder'
|
||
PRINT '***************************************************'
|
||
PRINT '* *'
|
||
PRINT '* Jeeves_Esales_CreateOrder *'
|
||
PRINT '* *'
|
||
PRINT '***************************************************'
|
||
GO
|
||
IF OBJECT_ID( 'Jeeves_Esales_CreateOrder', 'P' ) IS NOT NULL
|
||
BEGIN
|
||
DROP PROCEDURE Jeeves_Esales_CreateOrder
|
||
END
|
||
GO
|
||
IF (SELECT COUNT(*) FROM xspr WHERE
|
||
SprTrgName = 'Jeeves_Esales_CreateOrder' AND
|
||
SprTrgType = 'P' ) > 0
|
||
BEGIN
|
||
UPDATE xspr SET beskrivning=beskrivning WHERE
|
||
SprTrgName = 'Jeeves_Esales_CreateOrder' AND
|
||
SprTrgType = 'P'
|
||
END ELSE BEGIN
|
||
INSERT INTO xspr(SprTrgName,SprTrgType,RowCreatedDt)
|
||
VALUES('Jeeves_Esales_CreateOrder' , 'P', GETDATE() )
|
||
END
|
||
GO
|
||
----------------------------------------------------
|
||
|
||
CREATE procedure Jeeves_Esales_CreateOrder
|
||
@c_ForetagKod smallint,
|
||
@c_webUserName Jeeves_StrVarChar64 = null,
|
||
@c_CompanyNo Jeeves_StrVarChar32 = null,
|
||
@c_PersSign Jeeves_StrVarChar6,
|
||
@c_LangID smallint = 0,
|
||
@c_BatchId Jeeves_StrVarChar16 = null,
|
||
@c_OrderType smallint = null,
|
||
@c_Run_Type char(1) = null,
|
||
@c_TemplateRowID int = null,
|
||
@c_Edit Jeeves_StrVarCharMax = null,
|
||
@c_EditExt Jeeves_StrVarCharMax = null,
|
||
@c_Saljare Jeeves_StrVarChar32 = null,
|
||
@c_Lagstalle Jeeves_StrVarChar10 = null,
|
||
@c_OverrideCreditLimit char(1) = 0,
|
||
@o_OrderNumber int = null output
|
||
|
||
as
|
||
|
||
set nocount on
|
||
--set ansi_warnings o f f
|
||
--set concat_null_yields_null o f f
|
||
--set ansi_nulls o f f
|
||
--set ansi_padding o f f
|
||
|
||
declare @withPriceCalc char(1)
|
||
select @withPriceCalc = 'Y'
|
||
|
||
declare @oh_OrdStat smallint,
|
||
@orp_OrdRadSt smallint,
|
||
@orp_OrdRadNr int,
|
||
@orp_vbordradsum money,
|
||
@orp_vb_prisinklmoms Jeeves_Amount,
|
||
@orp_Vb_Pris Jeeves_Amount,
|
||
@wr Jeeves_StrVarChar256,
|
||
@x int,
|
||
@dbe int,
|
||
@dbc int,
|
||
@dbp int,
|
||
@Enter_TranCount as int,
|
||
@NewLine as nvarchar(2),
|
||
@PgmId Jeeves_StrVarChar256,
|
||
@salj_saljare Jeeves_StrVarChar32,
|
||
@kus_kundrabatt float,
|
||
@kus_rabklass smallint,
|
||
@kus_Kreditsparr char(1),
|
||
@kus_kundsaldo money,
|
||
@kus_ordsum money,
|
||
@kus_kundkredlim money,
|
||
@kus_momskod smallint,
|
||
@kus_offnr Jeeves_StrVarChar10,
|
||
@ar_artkundrabkod char(1),
|
||
@ar_artrabklass smallint,
|
||
@ar_momskod smallint,
|
||
@sy1_PrisListaInklMoms char(1),
|
||
@sy1_momskod smallint,
|
||
@oh_vbordsum money,
|
||
@oh_ordsum money,
|
||
@Today datetime,
|
||
@Momssats float,
|
||
@CompanyNo Jeeves_StrVarChar20,
|
||
@ContactNo int,
|
||
@prislista int,
|
||
@lagstalle Jeeves_StrVarChar10,
|
||
@Saljare Jeeves_StrVarChar32,
|
||
@ar_artfsgforp smallint,
|
||
@ar_palaggdelforp float,
|
||
@ValKurs ztCurrencyRate,
|
||
@valkod Jeeves_StrVarChar4,
|
||
@Samfaktutskr char(1),
|
||
@Allowpurchase char(1),
|
||
@PCode int,
|
||
@SALES048 smallint,
|
||
@KostBar Jeeves_StrVarChar8,
|
||
@KostStalleKod Jeeves_StrVarChar8,
|
||
@K4 Jeeves_StrVarChar8,
|
||
@K5 Jeeves_StrVarChar8,
|
||
@K6 Jeeves_StrVarChar8,
|
||
@K7 Jeeves_StrVarChar8,
|
||
@AutoRegel Jeeves_StrVarChar4;
|
||
|
||
exec Jeeves_Esales_GetUserInfo
|
||
@c_IntrnCoNo = @c_ForetagKod,
|
||
@c_webUserName = @c_webUserName,
|
||
@c_CompanyNo = @c_CompanyNo,
|
||
@o_LangID = @c_LangID output,
|
||
@o_CompanyNo = @CompanyNo output,
|
||
@o_ContactNo = @ContactNo output,
|
||
@o_Lagstalle = @Lagstalle output,
|
||
@o_Prislista = @Prislista output,
|
||
@o_Saljare = @Saljare output,
|
||
@o_Valkod = @Valkod output,
|
||
@o_ValKurs = @Valkurs output
|
||
|
||
if @c_Saljare is null select @c_Saljare = @Saljare
|
||
|
||
select @Today = getdate()
|
||
|
||
---Get customer discount, pricelist, credit info from table kus
|
||
select @kus_kundrabatt = kundrabatt,
|
||
@kus_rabklass = rabklass,
|
||
@kus_Kreditsparr = kreditsparr,
|
||
@kus_kundsaldo = kus.kundsaldo,
|
||
@kus_ordsum = kus.ordsum,
|
||
@kus_kundkredlim = kus.kundkredlim,
|
||
@kus_momskod = kus.momskod,
|
||
@kus_offnr = offnr,
|
||
@Samfaktutskr = samfaktutskr
|
||
from kus
|
||
where
|
||
ftgnr = @CompanyNo and
|
||
foretagkod = @c_ForetagKod
|
||
|
||
--If customer credit is blocked then abort
|
||
if @kus_kreditsparr = '1' begin
|
||
exec Jeeves_GT @wr output,@c_ForetagKod,@c_LangID,1344,'Kunden <20>r kreditsp<73>rrad'
|
||
EXECUTE Jeeves_RaisError 21001, @wr
|
||
return -1344
|
||
end
|
||
|
||
--Assign from sy1
|
||
select @sy1_PrisListaInklMoms = isnull(prislistainklmoms,0),
|
||
@sy1_momskod = momskod
|
||
from sy1
|
||
where
|
||
sy1.foretagkod = @c_ForetagKod
|
||
|
||
select @Enter_TranCount = @@TranCount,
|
||
@NewLine=char(13)+char(10),
|
||
@dbp=@@ProcId
|
||
|
||
---Calc VAT------------------------------------------------------
|
||
if @kus_momskod = 0 begin
|
||
select @Momssats = 0
|
||
end
|
||
else begin
|
||
if @ar_momskod is null select @ar_momskod = isnull(@kus_momskod,@sy1_momskod)
|
||
select @Momssats = x1.momssats
|
||
from x1
|
||
where
|
||
momskod = @ar_momskod
|
||
end
|
||
|
||
if @sy1_PrisListaInklMoms in ('1','3') begin
|
||
select @orp_vb_prisinklmoms = @orp_Vb_Pris
|
||
select @orp_vb_pris = @orp_vb_pris/(1.0+(@MomsSats/100.0))
|
||
end
|
||
else begin
|
||
select @orp_vb_prisinklmoms = @orp_vb_pris * (1.0+(@Momssats/100.0))
|
||
end
|
||
--select vbpris2=@orp_vb_pris,prisin=@orp_vb_prisinklmoms, moms=@Momssats, kmoms=@kus_momskod,armoms= @ar_momskod
|
||
-----------------------------------------------------------
|
||
|
||
---Check if creditlimit is reached
|
||
if @kus_kundkredlim > 0 and @c_OverrideCreditLimit = 0 begin
|
||
if (isnull(@oh_ordsum,0) + @kus_kundsaldo + @kus_ordsum) > @kus_kundkredlim begin
|
||
exec Jeeves_GT @wr output,@c_ForetagKod,@c_LangID,3679,'Kundens kreditgr<67>ns <20>r <20>verskriden'
|
||
EXECUTE Jeeves_RaisError 21001, @wr
|
||
return -3679
|
||
end
|
||
end
|
||
|
||
--Always use parameter if provided.
|
||
if @c_Lagstalle is null select @c_Lagstalle = @Lagstalle
|
||
|
||
select @SALES048 = dbo.Jeeves_FN_GetParam(@c_ForetagKod, 'SALES048', 'N',null)
|
||
|
||
--Get cost codes from sales person or location (the same way as UF_Oh_Get_InternKonton)
|
||
|
||
if @SALES048 = 1 begin
|
||
--Get settings from inventory location
|
||
|
||
select
|
||
@KostStalleKod = KostStalleKod,
|
||
@KostBar = KostBar,
|
||
@K4 = K4,
|
||
@K5 = K5,
|
||
@K6 = K6,
|
||
@K7 = K7,
|
||
@AutoRegel = AutoRegelForskott
|
||
from xb with (NoLock) where
|
||
ForetagKod = @c_ForetagKod
|
||
and LagStalle = @c_LagStalle;
|
||
|
||
end else if @SALES048 = 2 begin
|
||
--Get settings from sales person
|
||
if @Saljare is not null begin
|
||
select
|
||
@KostStalleKod = KostStalleKod,
|
||
@KostBar = KostBar,
|
||
@K4 = K4,
|
||
@K5 = K5,
|
||
@K6 = K6,
|
||
@K7 = K7,
|
||
@AutoRegel = AutoRegelForskott
|
||
from salj with (NoLock) where
|
||
ForetagKod = @c_ForetagKod
|
||
and Saljare=@Saljare;
|
||
end
|
||
end else if @SALES048 = 3 begin
|
||
-- Try sales person first and then and add values
|
||
-- from location is not provided
|
||
|
||
if @Saljare is not null begin
|
||
select
|
||
@KostStalleKod = KostStalleKod,
|
||
@KostBar = KostBar,
|
||
@K4 = K4,
|
||
@K5 = K5,
|
||
@K6 = K6,
|
||
@K7 = K7,
|
||
@AutoRegel = AutoRegelForskott
|
||
from salj with (NoLock) where
|
||
ForetagKod = @c_ForetagKod
|
||
and Saljare=@Saljare;
|
||
end
|
||
|
||
select
|
||
@KostStalleKod = ISNULL(@KostStalleKod, KostStalleKod),
|
||
@KostBar = ISNULL(@KostBar, KostBar),
|
||
@K4 = ISNULL(@K4, K4),
|
||
@K5 = ISNULL(@K5, k5),
|
||
@K6 = ISNULL(@K6, K6),
|
||
@K7 = ISNULL(@K7, K7),
|
||
@AutoRegel = ISNULL(@AutoRegel, AutoRegelForskott)
|
||
from xb with (NoLock) where
|
||
ForetagKod = @c_ForetagKod
|
||
and LagStalle = @c_LagStalle;
|
||
|
||
end
|
||
|
||
begin tran
|
||
|
||
select @oh_vbordsum = 0
|
||
select @oh_ordsum = 0
|
||
|
||
select @oh_OrdStat = Convert(int,dbo.Jeeves_FN_GetParam(@c_ForetagKod,'webapp031','N',null))
|
||
if @oh_ordstat is null select @oh_OrdStat = Convert(int,dbo.Jeeves_FN_GetParam(@c_ForetagKod,'WEBAPP003','N',null))
|
||
|
||
select @c_OrderType = isnull(@c_OrderType, convert(int,dbo.Jeeves_FN_GetParam(@c_ForetagKod,'WEBAPP008','N','1')))
|
||
|
||
if @samfaktutskr = '1' begin
|
||
select @samfaktutskr = samfaktutskr from x6
|
||
where x6.ordtyp = @c_OrderType and x6.foretagkod = @c_ForetagKod
|
||
end
|
||
|
||
if (@oh_OrdStat is null) or (@oh_OrdStat > 10) select @oh_OrdStat = 10
|
||
|
||
execute @x = Jeeves_Init_Insert_oh
|
||
@c_ForetagKod = @c_ForetagKod,
|
||
@c_OrderNr = @o_OrderNumber output,
|
||
@c_OrderNrAlfa = 'Internet',
|
||
@c_OrdStat = @oh_ordstat,
|
||
@c_PersSign = @c_PersSign,
|
||
@c_FtgNr = @CompanyNo,
|
||
@c_Ordtyp = @c_OrderType,
|
||
@c_Lagstalle = @c_Lagstalle,
|
||
@c_Saljare = @c_Saljare,
|
||
@c_KundRabatt = @kus_kundrabatt,
|
||
@c_ftgkontaktnr = @ContactNo,
|
||
@c_vbordsum = @oh_vbordsum,
|
||
@c_rowcreatedby = @c_perssign,
|
||
@c_rowcreateddt = @Today,
|
||
@c_Valkod = @valkod,
|
||
@c_Valkurs = @Valkurs,
|
||
@c_Samfaktutskr = @samfaktutskr,
|
||
@c_KostBar = @KostBar,
|
||
@c_KostStalleKod = @KostStalleKod,
|
||
@c_K4 = @K4,
|
||
@c_K5 = @K5,
|
||
@c_K6 = @K6,
|
||
@c_K7 = @K7,
|
||
@c_AutoRegel = @AutoRegel;
|
||
|
||
if (@@Error <> 0) or (@x < 0) begin
|
||
EXECUTE Jeeves_RaisError 21001, 'Error when creating order header'
|
||
rollback tran
|
||
return -100
|
||
end
|
||
|
||
select @orp_ordradst = dbo.Jeeves_FN_GetParam (@c_ForetagKod,'WEBAPP018','N','10')
|
||
if @oh_OrdStat < @orp_ordradst select @orp_ordradst = @oh_OrdStat
|
||
|
||
update oh set
|
||
oh.ordsum = @oh_ordsum,
|
||
oh.vbordsum = @oh_vbordsum
|
||
where
|
||
oh.ordernr = @o_OrderNumber and
|
||
oh.foretagkod = @c_ForetagKod
|
||
|
||
if @@Error <> 0 begin
|
||
rollback tran
|
||
return -100
|
||
end
|
||
|
||
commit tran
|
||
|
||
if @c_Run_Type = 'R' exec Jeeves_Esales_GetOrp @c_ForetagKod,@c_webUserName,@c_LangID,@o_OrderNumber
|
||
|
||
return
|
||
GO
|
||
PRINT 'End Jeeves_Esales_CreateOrder'
|
||
GO
|
||
PRINT 'End Jeeves_Esales_CreateOrder'
|
||
GO
|
||
|