PyJeeves/jeeves_sp_updates/Jeeves_Esales_PlaceOrder.spr

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