445 lines
12 KiB
Text
445 lines
12 KiB
Text
SET ANSI_NULLS OFF
|
|
GO
|
|
SET QUOTED_IDENTIFIER OFF
|
|
GO
|
|
SET NOCOUNT ON
|
|
GO
|
|
PRINT 'Begin Jeeves_Esales_PlaceOrder'
|
|
GO
|
|
PRINT 'Begin Jeeves_Esales_PlaceOrder'
|
|
PRINT '***************************************************'
|
|
PRINT '* *'
|
|
PRINT '* Jeeves_Esales_PlaceOrder *'
|
|
PRINT '* *'
|
|
PRINT '***************************************************'
|
|
GO
|
|
IF OBJECT_ID( 'Jeeves_Esales_PlaceOrder', 'P' ) IS NOT NULL
|
|
BEGIN
|
|
DROP PROCEDURE Jeeves_Esales_PlaceOrder
|
|
END
|
|
GO
|
|
IF (SELECT COUNT(*) FROM xspr WHERE
|
|
SprTrgName = 'Jeeves_Esales_PlaceOrder' AND
|
|
SprTrgType = 'P' ) > 0
|
|
BEGIN
|
|
UPDATE xspr SET beskrivning=beskrivning WHERE
|
|
SprTrgName = 'Jeeves_Esales_PlaceOrder' AND
|
|
SprTrgType = 'P'
|
|
END ELSE BEGIN
|
|
INSERT INTO xspr(SprTrgName,SprTrgType,RowCreatedDt)
|
|
VALUES('Jeeves_Esales_PlaceOrder' , 'P', GETDATE() )
|
|
END
|
|
GO
|
|
----------------------------------------------------
|
|
|
|
CREATE Procedure Jeeves_Esales_PlaceOrder
|
|
@c_ForetagKod smallint,
|
|
@c_OrderNumber int output,
|
|
@c_webUserName Jeeves_StrVarChar64 = null,
|
|
@c_CompanyNo Jeeves_StrVarChar32 = null,
|
|
@c_LangID smallint = null,
|
|
@c_LevSattKod smallint = null,
|
|
@c_kundref2 Jeeves_StrVarChar32 = null,
|
|
@c_kundbestnr Jeeves_StrVarChar32 = null,
|
|
@c_editext Jeeves_StrVarCharMax = null,
|
|
@c_CoName Jeeves_StrVarChar64 = null,
|
|
@c_Addr1 Jeeves_StrVarChar64 = null,
|
|
@c_Addr2 Jeeves_StrVarChar64 = null,
|
|
@c_PostalCode Jeeves_StrVarChar64 = null,
|
|
@c_City Jeeves_StrVarChar64 = null,
|
|
@c_ProvinceCode Jeeves_StrVarChar5 = null,
|
|
@c_CountryCode Jeeves_StrVarChar3 = null,
|
|
@c_godsmarke1 Jeeves_StrVarChar64 = null,
|
|
@c_godsmarke2 Jeeves_StrVarChar64 = null,
|
|
@c_godsmarke3 Jeeves_StrVarChar64 = null,
|
|
@c_godsmarke4 Jeeves_StrVarChar64 = null,
|
|
@c_TA_MailNotified Jeeves_StrVarChar64 = null,
|
|
@c_TA_PhonNotifiedNo Jeeves_StrVarChar64 = null,
|
|
@c_TA_SMSNotifiedNo Jeeves_StrVarChar64 = null,
|
|
@c_levforetolv char(1) = '0',
|
|
@c_withFreightCalc char(1) = 'Y',
|
|
@c_ordlevplats1 Jeeves_StrVarChar20 = null,
|
|
@c_vRef Jeeves_StrVarChar64 = null,
|
|
@c_orderStatus smallint = null,
|
|
@c_PartDeliveryAllowed smallint = null,
|
|
@c_text Jeeves_StrVarCharMax = null,
|
|
@c_PaymentType char(1) = '0' --0=invoice, 1=card
|
|
|
|
As
|
|
|
|
set nocount on
|
|
|
|
declare @dbc int,
|
|
@ftgnr Jeeves_StrVarChar32,
|
|
@ftgkontaktnr int,
|
|
@org_ftgnr Jeeves_StrVarChar32,
|
|
@kp_ftgperson Jeeves_StrVarChar32,
|
|
@Momskod smallint,
|
|
@Levsattkod smallint,
|
|
@LevvillkKod smallint,
|
|
@Lagstalle Jeeves_StrVarChar10,
|
|
@Betkod Jeeves_StrVarChar2,
|
|
@Kreditorder Jeeves_Boolean,
|
|
@valkurs ztCurrencyRate,
|
|
@Ordsum Jeeves_Amount,
|
|
@PersSign Jeeves_StrVarChar32,
|
|
@Sy1_rbn char(1),
|
|
@sy1_FtgKontaktToErRef char(1),
|
|
@wi smallint,
|
|
@x7_ordstat smallint,
|
|
@wr Jeeves_StrVarChar256,
|
|
@kundref2 Jeeves_StrVarChar32,
|
|
@TA_MailNotified Jeeves_StrVarChar64,
|
|
@TA_PhonNotifiedNo Jeeves_StrVarChar64,
|
|
@TA_SMSNotifiedNo Jeeves_StrVarChar64,
|
|
/*Output från Jeeves_Calc_Frakt*/
|
|
@out_Fraktkostnad JEEVES_Amount,
|
|
@out_ExpeditionKostnad JEEVES_Amount,
|
|
@Out_Fraktdebkod JEEVES_Boolean,
|
|
@Out_Ordervarde JEEVES_Amount,
|
|
@Out_Fraktvikt float,
|
|
@jvss_OrderReservation char(1),
|
|
@kpwid integer,
|
|
@OrdBerLevDat DateTime,
|
|
@SALES007 smallint,
|
|
@kus_AddArtEjAktiv char(1),
|
|
@OrdLevAdr4 Jeeves_StrVarChar64
|
|
|
|
exec Jeeves_Esales_GetUserInfo @c_IntrnCoNo = @c_ForetagKod,
|
|
@c_webUserName = @c_webUserName,
|
|
@c_CompanyNo = @c_CompanyNo,
|
|
@o_LangID = @c_LangID output,
|
|
@o_CompanyNo = @ftgnr output,
|
|
@o_ContactNo = @ftgkontaktnr output,
|
|
@o_OrgCompanyNo = @org_ftgnr output,
|
|
@o_kpwid = @kpwid output
|
|
|
|
if (@c_ordlevplats1 = @ftgnr) select @c_ordlevplats1 = null
|
|
|
|
if (@c_ordlevplats1 = '') select @c_ordlevplats1 = null
|
|
|
|
-- concatenate postal code and city for order unique adresses
|
|
select @OrdLevAdr4 = @c_PostalCode + ' ' + @c_City
|
|
select @c_City = null
|
|
|
|
select @kp_ftgperson = kp.ftgperson from kp
|
|
where
|
|
kp.foretagkod = @c_ForetagKod and
|
|
kp.ftgnr = @ftgnr and
|
|
kp.ftgkontaktnr = @ftgkontaktnr
|
|
|
|
select @Momskod = momskod,
|
|
@Levsattkod = isnull(@c_LevSattKod, levsattkod),
|
|
@Kreditorder = kreditorder,
|
|
@Lagstalle = lagstalle,
|
|
@valkurs = valkurs,
|
|
@Ordsum = ordsum,
|
|
@Levvillkkod = levvillkkod,
|
|
@Betkod = betkod,
|
|
@PersSign = perssign,
|
|
@Kundref2 = kundref2,
|
|
@c_vRef = isnull(@c_vRef, vref),
|
|
@TA_MailNotified = TA_MailNotified,
|
|
@TA_PhonNotifiedNo = TA_PhonNotifiedNo,
|
|
@TA_SMSNotifiedNo = TA_SMSNotifiedNo
|
|
from oh where
|
|
oh.ordernr = @c_OrderNumber and
|
|
oh.foretagkod = @c_ForetagKod
|
|
|
|
if @@Rowcount < 1 begin
|
|
exec Jeeves_GT @wr output,@c_ForetagKod,@c_LangID,1237,'Kundordern saknas'
|
|
EXECUTE Jeeves_RaisError 21001, @wr
|
|
return
|
|
end
|
|
|
|
select @x7_ordstat = dbo.Jeeves_FN_GetParam(@c_ForetagKod,'WEBAPP003','N',null)
|
|
|
|
--jeevesparamnumeric from jvss
|
|
-- where
|
|
-- jeevesparamname = N'WebOrderStatus' and
|
|
-- foretagkod = @c_ForetagKod
|
|
|
|
--Use passed in value if available
|
|
select @x7_ordstat = isnull(@c_orderStatus, @x7_ordstat)
|
|
|
|
select @jvss_OrderReservation = jvss.jeevesparamboolean from jvss
|
|
where
|
|
jvss.jeevesparamname = 'webapp010' and
|
|
jvss.foretagkod = @c_ForetagKod
|
|
|
|
--select @orp_ordradstat = dbo.Jeeves_FN_GetParam (@c_IntrnCoNo,'WEBAPP018','N','10')
|
|
|
|
select @Sy1_rbn = sy1_rbn,
|
|
@sy1_FtgKontaktToErRef=FtgKontaktToErRef
|
|
from sy1
|
|
where sy1.foretagkod = @c_ForetagKod
|
|
|
|
--if @c_kundref is null and FtgKontaktToErRef is true then insert Contact name as reference
|
|
if @c_kundref2 is null begin
|
|
if @sy1_FtgKontaktToErRef = '1' select @c_kundref2 = @kp_ftgperson
|
|
end
|
|
|
|
if @c_vRef is null begin
|
|
if (@org_ftgnr <> @ftgnr) begin
|
|
select @c_vRef = ftgnamn from fr
|
|
where fr.ftgnr = @org_ftgnr and
|
|
fr.foretagkod = @c_ForetagKod
|
|
End
|
|
End
|
|
|
|
execute @wi = Jeeves_oh_ordervarde
|
|
@In_OrderNr = @c_OrderNumber,
|
|
@In_ValKurs = @Valkurs,
|
|
@In_sy1_rbn = @Sy1_rbn,
|
|
@In_PersSign = @Perssign,
|
|
@Call_Type = 4,
|
|
@c_Foretagkod = @c_ForetagKod
|
|
|
|
--The estimated delivery date of the order will be set to the earliest delivery date of a row.
|
|
select @OrdBerLevDat = min(OrdBerLevDat) from orp where foretagkod = @c_ForetagKod AND OrderNr = @c_OrderNumber
|
|
|
|
begin tran
|
|
|
|
exec @wi = Jeeves_oh_kora @c_OrderNumber,null,2,@c_ForetagKod
|
|
|
|
if @Wi < 0 begin
|
|
Rollback tran
|
|
return @Wi
|
|
end
|
|
|
|
select @SALES007 = dbo.Jeeves_FN_GetParam(@c_ForetagKod, 'SALES007', 'N',null)
|
|
select @kus_AddArtEjAktiv = AddArtEjAktiv from kus where foretagkod = @c_ForetagKod and ftgnr = @ftgnr
|
|
|
|
if @SALES007 = 1 AND @kus_AddArtEjAktiv <> '1'
|
|
BEGIN
|
|
exec @wi = JEEVES_Orp_Create_Tillagg @c_OrderNumber,@Perssign,@c_ForetagKod,0
|
|
|
|
if @Wi < 0 begin
|
|
Rollback tran
|
|
return @Wi
|
|
end
|
|
END
|
|
|
|
if @c_withFreightCalc = 'Y' Begin
|
|
|
|
declare @Artvikt float,
|
|
@Volume float,
|
|
@Fraktvikt float,
|
|
@Expavgkod Jeeves_Boolean,
|
|
@Fraktkostnader Jeeves_Amount,
|
|
@DispatchFeeExists smallint,
|
|
@valkod Jeeves_StrVarChar4,
|
|
@Fraktskrymmekod Jeeves_Boolean
|
|
|
|
select @Artvikt = artvikt,
|
|
@Volume = volume,
|
|
@Fraktkostnader=Emballagekostnad+fraktkostnman+ForsakringsKostnad+ovrfaktkostnad1+ovrfaktkostnad2,
|
|
@valkod = valkod,
|
|
@Expavgkod = expavgkd,
|
|
@Fraktskrymmekod = fraktskrymmekod,
|
|
@Fraktvikt = fraktvikt
|
|
from oh where
|
|
oh.ordernr = @c_OrderNumber and
|
|
oh.foretagkod = @c_ForetagKod
|
|
|
|
--Check that dispatch fee is defined in table fkst
|
|
--This check has been removed as described in 521932.
|
|
--select @DispatchFeeExists=faktkostntyp from fkst where
|
|
-- fkst.faktkostntyp = 4 and
|
|
-- fkst.foretagkod = @c_ForetagKod
|
|
|
|
if @@Rowcount < 1 begin
|
|
rollback tran
|
|
exec Jeeves_GT @wr output,@c_ForetagKod,@c_LangID,1333,'Expeditionsavgift kan ej debiteras, definition saknas i tabellen Fakturakostnader (fkst) !'
|
|
EXECUTE Jeeves_RaisError 21001, @wr
|
|
return
|
|
end
|
|
|
|
execute JEEVES_Calc_Frakt
|
|
@In_ForetagKod=@c_ForetagKod,
|
|
@In_FtgNr = @ftgnr,
|
|
@In_OrdLevPlats1 = @ftgnr,
|
|
@In_OrderNr = @c_OrderNumber,
|
|
@In_KreditOrder = @Kreditorder,
|
|
--@In_OrdBerLevDat datetime=NULL,
|
|
@In_LagStalle = @Lagstalle,
|
|
--@In_OrdLevNr smallint=NULL,
|
|
--@In_OrdStat smallint=NULL,
|
|
--@In_OrdFsNr smallint=NULL,
|
|
@In_FraktVikt = @Artvikt,
|
|
@In_AntalEURPall = 0,
|
|
@In_AntalOvrPall = 0,
|
|
@In_Volume = @Volume,
|
|
@In_LevForeTolv = @c_Levforetolv,
|
|
@In_FraktSkrymmeKod = @Fraktskrymmekod,
|
|
@In_LevSattKod = @Levsattkod,
|
|
@In_LevVillkKod = @Levvillkkod,
|
|
@In_ValKurs = @Valkurs,
|
|
@In_Valkod = @Valkod,
|
|
@In_ExpAvgKod = @ExpAvgkod,
|
|
@In_BetKod = @Betkod,
|
|
@In_MomsKod = @Momskod,
|
|
@In_OrderVarde = @Ordsum,
|
|
@Call_Type = 1,
|
|
@PersSign = @PersSign,
|
|
@In_OvrFaktKostnader = 0,
|
|
@Svar_FraktKostnad = @out_Fraktkostnad output,
|
|
@Svar_ExpeditionKostnad = @out_ExpeditionKostnad output,
|
|
@Svar_FraktdebKod = @Out_Fraktdebkod output,
|
|
@Svar_OrderVarde = @Out_Ordervarde output,
|
|
@Svar_Fraktvikt = @Out_Fraktvikt output
|
|
|
|
if @@Error <> 0 begin
|
|
rollback tran
|
|
return
|
|
end
|
|
End
|
|
|
|
if @c_PaymentType <> '1' begin
|
|
Update oh SET
|
|
oh.ordernralfa = 'Internet',
|
|
oh.ordstat = isnull(@x7_ordstat,13),
|
|
oh.kundref2 = @c_kundref2,
|
|
oh.kundbestnr = @c_kundbestnr,
|
|
oh.levforetolv = @c_levforetolv,
|
|
oh.levsattkod = @Levsattkod,
|
|
oh.ordberlevdat = @OrdBerLevDat,
|
|
oh.ordlevadr1 = @c_CoName,
|
|
oh.ordlevadr2 = @c_Addr1,
|
|
oh.ordlevadr3 = @c_Addr2,
|
|
oh.ordlevadr4 = @OrdLevAdr4,
|
|
oh.ordlevadrbstort = @c_City,
|
|
oh.Ordlevadrlandskod = @c_CountryCode,
|
|
oh.ordlevadrprovincecode = @c_ProvinceCode,
|
|
oh.editext = @c_editext,
|
|
oh.edit = @c_text,
|
|
oh.bruttovikt = isnull(@artvikt,0),
|
|
oh.fraktkostnber = isnull(@out_Fraktkostnad,0),
|
|
oh.godsmarke1 = @c_godsmarke1,
|
|
oh.godsmarke2 = @c_godsmarke2,
|
|
oh.godsmarke3 = @c_godsmarke3,
|
|
oh.godsmarke4 = @c_godsmarke4,
|
|
oh.ordlevplats1 = @c_ordlevplats1,
|
|
oh.dellevtillaten = isnull(@c_PartDeliveryAllowed, 0),
|
|
oh.vref = @c_vRef,
|
|
oh.ta_mailnotified = isnull(@c_TA_MailNotified, @TA_MailNotified),
|
|
oh.ta_phonnotifiedno = isnull(@c_TA_PhonNotifiedNo, @TA_PhonNotifiedNo),
|
|
oh.ta_smsnotifiedno = isnull(@c_TA_SMSNotifiedNo, @TA_SMSNotifiedNo)
|
|
Where ordernr = @c_OrderNumber and
|
|
foretagkod = @c_ForetagKod
|
|
|
|
if @@Error <> 0 begin
|
|
rollback tran
|
|
return
|
|
end
|
|
|
|
update kp set
|
|
kp.antalkop = isnull(kp.antalkop,0) + 1
|
|
where
|
|
kp.foretagkod = @c_ForetagKod and
|
|
kp.ftgnr = @ftgnr and
|
|
kp.ftgkontaktnr = @ftgkontaktnr
|
|
|
|
if @@Error <> 0 begin
|
|
rollback tran
|
|
return
|
|
end
|
|
|
|
end else begin
|
|
--KORTBETALNING
|
|
--do not update orderstatus
|
|
--do not imcrement kp
|
|
Update oh SET
|
|
oh.ordernralfa = 'Internet',
|
|
oh.kundref2 = @c_kundref2,
|
|
oh.kundbestnr = @c_kundbestnr,
|
|
oh.levforetolv = @c_levforetolv,
|
|
oh.levsattkod = @Levsattkod,
|
|
oh.ordberlevdat = @OrdBerLevDat,
|
|
oh.ordlevadr1 = @c_CoName,
|
|
oh.ordlevadr2 = @c_Addr1,
|
|
oh.ordlevadr3 = @c_Addr2,
|
|
oh.ordlevadr4 = @OrdLevAdr4,
|
|
oh.ordlevadrbstort = @c_City,
|
|
oh.Ordlevadrlandskod = @c_CountryCode,
|
|
oh.ordlevadrprovincecode = @c_ProvinceCode,
|
|
oh.editext = @c_editext,
|
|
oh.edit = @c_text,
|
|
oh.bruttovikt = isnull(@artvikt,0),
|
|
oh.fraktkostnber = isnull(@out_Fraktkostnad,0),
|
|
oh.godsmarke1 = @c_godsmarke1,
|
|
oh.godsmarke2 = @c_godsmarke2,
|
|
oh.godsmarke3 = @c_godsmarke3,
|
|
oh.godsmarke4 = @c_godsmarke4,
|
|
oh.ordlevplats1 = @c_ordlevplats1,
|
|
oh.dellevtillaten = isnull(@c_PartDeliveryAllowed, 0),
|
|
oh.vref = @c_vRef,
|
|
oh.ta_mailnotified = isnull(@c_TA_MailNotified, @TA_MailNotified),
|
|
oh.ta_phonnotifiedno = isnull(@c_TA_PhonNotifiedNo, @TA_PhonNotifiedNo),
|
|
oh.ta_smsnotifiedno = isnull(@c_TA_SMSNotifiedNo, @TA_SMSNotifiedNo)
|
|
Where ordernr = @c_OrderNumber and
|
|
foretagkod = @c_ForetagKod
|
|
|
|
if @@Error <> 0 begin
|
|
rollback tran
|
|
return
|
|
end
|
|
end
|
|
|
|
--remove any old
|
|
if exists(select 1 from webl where webl.ConnSQLIDkpw = @kpwid and
|
|
webl.ordernr = @c_OrderNumber ) begin
|
|
|
|
update webl set
|
|
ordernr = null
|
|
where
|
|
webl.ConnSQLIDkpw = @kpwid and
|
|
webl.ordernr = @c_OrderNumber
|
|
end
|
|
|
|
|
|
if @@Error <> 0 begin
|
|
rollback tran
|
|
return
|
|
end
|
|
|
|
/*
|
|
insert into webo (Foretagkod,
|
|
OrderNr,
|
|
RowCreatedBy,
|
|
Perssign,
|
|
RegDat,
|
|
RowCreatedDt)
|
|
values (@c_IntrnCoNo,
|
|
@o_OrderNo,
|
|
@Perssign,
|
|
@Perssign,
|
|
getdate(),
|
|
getdate())
|
|
|
|
if @@Error <> 0 begin
|
|
rollback tran
|
|
return
|
|
end */
|
|
|
|
commit tran
|
|
|
|
if @jvss_Orderreservation = '1' Begin
|
|
execute JEEVES_Oh_Bok
|
|
@OrderNr = @c_OrderNumber,
|
|
@PersSign = @PersSign,
|
|
@ForetagKod =@c_ForetagKod
|
|
|
|
End
|
|
|
|
--select @o_OrderNo = @Ordernr
|
|
|
|
return
|
|
|
|
|
|
GO
|
|
PRINT 'End Jeeves_Esales_PlaceOrder'
|
|
GO
|
|
PRINT 'End Jeeves_Esales_PlaceOrder'
|
|
GO
|
|
|