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 är kreditspä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äns är ö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