initial commit
This commit is contained in:
@@ -0,0 +1,190 @@
|
||||
use arizona
|
||||
;
|
||||
|
||||
|
||||
/*=======================================================================
|
||||
|
||||
Galenica - End Of Year - Tasks in order to force the Invoice
|
||||
|
||||
STEP 01 - Déclaration des variables
|
||||
STEP 02 - Création / suppression de la table PHOU historisée
|
||||
STEP 03 - Remplissage de la table PHOU historisée
|
||||
STEP 04 - Construction de la table de changements
|
||||
STEP 05 - Application des changements
|
||||
STEP 06 - Rétablissement des anciennes valeurs
|
||||
|
||||
=======================================================================*/
|
||||
/*=======================================================================
|
||||
STEP 01 - Déclaration des variables
|
||||
=======================================================================*/
|
||||
declare @force_delete int = 08,
|
||||
@mode int = 1, /* 1 = Check | 2 = Just do IT !!! */
|
||||
@cmdsql varchar(max),
|
||||
@today datetime = getdate()
|
||||
;
|
||||
declare @day_delay table (
|
||||
day_from int,
|
||||
day_to int,
|
||||
delivery_delay int,
|
||||
closing_mode int)
|
||||
;
|
||||
/*=======================================================================
|
||||
STEP 02 - Création / suppression de la table PHOU historisée
|
||||
=======================================================================*/
|
||||
if (EXISTS (select *
|
||||
from arizonacust.INFORMATION_SCHEMA.TABLES
|
||||
where TABLE_SCHEMA = 'dbo'
|
||||
and TABLE_NAME = 'PH_Organizational_Unit_history'))
|
||||
begin
|
||||
|
||||
if @force_delete = 1 begin
|
||||
select @cmdsql = 'drop table arizonacust.dbo.PH_Organizational_Unit_history'
|
||||
exec (@cmdsql)
|
||||
end
|
||||
|
||||
end else begin
|
||||
|
||||
create table arizonacust.dbo.PH_Organizational_Unit_history (
|
||||
PH_Organizational_Unit_history_id int identity (1,1),
|
||||
phouh_year int,
|
||||
phouh_PH_Organizational_Unit_guid uniqueidentifier,
|
||||
phouh_PHOU_AB_delivery_delay smallint,
|
||||
phouh_PHOU_AB_closing_mode smallint
|
||||
)
|
||||
end
|
||||
/*=======================================================================
|
||||
STEP 03 - Remplissage de la table PHOU historisée
|
||||
=======================================================================*/
|
||||
insert into arizonacust.dbo.PH_Organizational_Unit_history (
|
||||
phouh_year,
|
||||
phouh_PH_Organizational_Unit_guid,
|
||||
phouh_PHOU_AB_delivery_delay,
|
||||
phouh_PHOU_AB_closing_mode)
|
||||
select year(@today),
|
||||
PH_Organizational_Unit_guid,
|
||||
PHOU_AB_delivery_delay,
|
||||
PHOU_AB_closing_mode
|
||||
from dbo.Organizational_Unit ou (nolock)
|
||||
join PH_Organizational_Unit P (nolock)
|
||||
on PHOU_Organizational_Unit = Organizational_Unit_Id
|
||||
join dbo.OU_store_history oush (nolock)
|
||||
on oush.OU_store_history_GUID = (
|
||||
select top 1 oush2.OU_store_history_GUID
|
||||
from dbo.OU_store_history oush2 (nolock)
|
||||
where isnull(oush2.OUSH_end_date,'2050-01-01') >= @today
|
||||
and oush2.OUSH_organizational_unit = ou.Organizational_unit_ID
|
||||
order by oush2.OUSH_start_date desc
|
||||
)
|
||||
join dbo.Address_criteria AC (nolock)
|
||||
on AC.ADCR_subsidiary = ou.OU_subsidiary
|
||||
and AC.ADCR_address = ou.OU_address
|
||||
join dbo.Criteria C (nolock)
|
||||
on C.Criteria_ID = AC.ADCR_criteria
|
||||
and C.CR_code = 'PROD'
|
||||
join dbo.Criteria_Type Ct (nolock)
|
||||
on Ct.Criteria_type_ID = C.CR_criteria_type
|
||||
and Ct.CRT_code = 'ENV'
|
||||
|
||||
where not exists (
|
||||
select 1
|
||||
from arizonacust.dbo.PH_Organizational_Unit_history p (nolock)
|
||||
where p.phouh_year = year(@today)
|
||||
and p.phouh_PH_Organizational_Unit_guid = PH_Organizational_Unit_guid
|
||||
)
|
||||
/*=======================================================================
|
||||
STEP 04 - Construction de la table de changements
|
||||
=======================================================================*/
|
||||
/* 1. From December 12th to December 17th (included) set the Delivery_delay to 10 */
|
||||
insert into @day_delay (day_from, day_to, delivery_delay,closing_mode)
|
||||
select 12, 17, 10, 0
|
||||
|
||||
/* 2. From December 18th to December 24th (included) set the Delivery_delay to 5 */
|
||||
insert into @day_delay (day_from, day_to, delivery_delay,closing_mode)
|
||||
select 18, 24, 5, 0
|
||||
|
||||
/* 3. From December 25th to December 31th (included) set the Delivery_delay to 2 ClosingMode */
|
||||
insert into @day_delay (day_from, day_to, delivery_delay,closing_mode)
|
||||
select 25, 30, 2, 1
|
||||
|
||||
/*=======================================================================
|
||||
STEP 05 - Application des changements
|
||||
=======================================================================*/
|
||||
if @mode = 2 begin
|
||||
|
||||
update phou
|
||||
set phou.PHOU_AB_delivery_delay = case when d.delivery_delay <= phou.PHOU_AB_delivery_delay
|
||||
then d.delivery_delay
|
||||
else PHOU.PHOU_AB_delivery_delay
|
||||
end,
|
||||
phou.PHOU_AB_closing_mode = case when phou.PHOU_AB_closing_mode = 1
|
||||
then PHOU.PHOU_AB_closing_mode
|
||||
else d.closing_mode
|
||||
end
|
||||
from dbo.PH_organizational_unit PHOU (nolock)
|
||||
join @day_delay d
|
||||
on day(@today) between d.day_from and d.day_to
|
||||
and month(@today) = 12
|
||||
where PHOU_AB_delivery_delay is not null
|
||||
and (PHOU_AB_delivery_delay <> case when d.delivery_delay <= phou.PHOU_AB_delivery_delay
|
||||
then d.delivery_delay
|
||||
else PHOU.PHOU_AB_delivery_delay
|
||||
end
|
||||
or phou.PHOU_AB_closing_mode <> case when phou.PHOU_AB_closing_mode = 1
|
||||
then PHOU.PHOU_AB_closing_mode
|
||||
else d.closing_mode
|
||||
end)
|
||||
|
||||
|
||||
end else begin
|
||||
|
||||
select phou.PH_organizational_unit_GUID,
|
||||
phou.PHOU_AB_delivery_delay ,'-->', case when d.delivery_delay <= phou.PHOU_AB_delivery_delay
|
||||
then d.delivery_delay
|
||||
else PHOU.PHOU_AB_delivery_delay
|
||||
end,
|
||||
phou.PHOU_AB_closing_mode ,'-->', case when phou.PHOU_AB_closing_mode = 1
|
||||
then PHOU.PHOU_AB_closing_mode
|
||||
else d.closing_mode
|
||||
end
|
||||
from dbo.PH_organizational_unit PHOU (nolock)
|
||||
join @day_delay d
|
||||
on day(@today) between d.day_from and d.day_to
|
||||
and month(@today) = 12
|
||||
where PHOU_AB_delivery_delay is not null
|
||||
and (PHOU_AB_delivery_delay <> case when d.delivery_delay <= phou.PHOU_AB_delivery_delay
|
||||
then d.delivery_delay
|
||||
else PHOU.PHOU_AB_delivery_delay
|
||||
end
|
||||
or phou.PHOU_AB_closing_mode <> case when phou.PHOU_AB_closing_mode = 1
|
||||
then PHOU.PHOU_AB_closing_mode
|
||||
else d.closing_mode
|
||||
end )
|
||||
|
||||
end
|
||||
/*=======================================================================
|
||||
STEP 06 - Rétablissement des anciennes valeurs
|
||||
=======================================================================*/
|
||||
if month(@today) = 12 and day(@today) = 31 begin
|
||||
|
||||
if @mode = 2 begin
|
||||
|
||||
update phou
|
||||
set phou.PHOU_AB_delivery_delay = phouh.phouh_PHOU_AB_delivery_delay,
|
||||
phou.PHOU_AB_closing_mode = phouh.phouh_PHOU_AB_closing_mode
|
||||
from dbo.PH_organizational_unit phou (nolock)
|
||||
join arizonacust.dbo.PH_organizational_unit_history phouh (nolock)
|
||||
on phouh.phouh_PH_Organizational_Unit_guid = phou.PH_organizational_unit_GUID
|
||||
and phouh.phouh_year = year(@today)
|
||||
|
||||
end else begin
|
||||
|
||||
select phou.PHOU_AB_delivery_delay ,'-->', phouh.phouh_PHOU_AB_delivery_delay,
|
||||
phou.PHOU_AB_closing_mode ,'-->', phouh.phouh_PHOU_AB_closing_mode
|
||||
from dbo.PH_organizational_unit phou (nolock)
|
||||
join arizonacust.dbo.PH_organizational_unit_history phouh (nolock)
|
||||
on phouh.phouh_PH_Organizational_Unit_guid = phou.PH_organizational_unit_GUID
|
||||
and phouh.phouh_year = year(@today)
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user