diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 2912ba8..5cb1f68 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -17,10 +17,11 @@ steps:
inputs:
TaskType: 'sqlInline'
InlineSql: |
+ /* step 1 - Check download from Pharmindex is finished */
use pharmindexTP
GO
- /* step 1 - Check download from Pharmindex is finished */
+
declare @today datetime;
@@ -39,56 +40,374 @@ steps:
GO
-
-begin try
-
-declare @out_param_int_1 int
-execute[dbo].[pdx_loading]
- @in_job_type = 20
- ,@skip_mapping = 0
- ,@in_subsidiary = 100
- ,@in_table_name = null
- ,@in_debug = 0
- ,@out_param_int_1 = @out_param_int_1 output
-
-end try
-begin catch
-declare
+ /* step 2 - INDEX - Transfert PharmIndexTP to Arizona items, Prescriber using Checksum */
+ begin try
+
+ declare @out_param_int_1 int
+ execute[dbo].[pdx_loading]
+ @in_job_type = 20
+ ,@skip_mapping = 0
+ ,@in_subsidiary = 100
+ ,@in_table_name = null
+ ,@in_debug = 0
+ ,@out_param_int_1 = @out_param_int_1 output
+
+ end try
+ begin catch
+ declare
@mail_message nvarchar(2000),
@mail_subject nvarchar(255);
- set @mail_message = '
Résumé des erreurs dans le tableau ci-dessous :
' +'
-
-
- | ErrorNumber |
- ErrorSeverity |
- ErrorState |
- ErrorProcedure |
- ErrorLine |
- ErrorMessage |
-
' + '
- | ' + isnull(convert(varchar, ERROR_NUMBER()), '') + ' |
- ' + isnull(convert(varchar, ERROR_SEVERITY()), '') + ' |
- ' + isnull(convert(varchar, ERROR_STATE()), '') + ' |
- ' + isnull(ERROR_PROCEDURE(), '') + ' |
- ' + isnull(convert(varchar, ERROR_LINE()), '') + ' |
- ' + isnull(ERROR_MESSAGE(), '') + ' |
-
'+ '
-
-
- ';
-
- set @mail_subject = 'INDEX - Transfert PharmIndex to PHGD_xx for items using checksum (Instance ' + @@SERVERNAME + ') - Job _D01941 - INDEX';
-
-/* envoi du mail */
-exec Arizona.dbo.aps_Send_Mail_with_template
- @in_param_varchar_2 = 'HCI_PharmIndex;HCI_DataManagement',
- @in_param_varchar_3 = @mail_message,
- @in_param_subject = @mail_subject,
- @in_job_type = 4;
-
-end catch
+ set @mail_message = ' Résumé des erreurs dans le tableau ci-dessous :
' +'
+
+
+ | ErrorNumber |
+ ErrorSeverity |
+ ErrorState |
+ ErrorProcedure |
+ ErrorLine |
+ ErrorMessage |
+
' + '
+ | ' + isnull(convert(varchar, ERROR_NUMBER()), '') + ' |
+ ' + isnull(convert(varchar, ERROR_SEVERITY()), '') + ' |
+ ' + isnull(convert(varchar, ERROR_STATE()), '') + ' |
+ ' + isnull(ERROR_PROCEDURE(), '') + ' |
+ ' + isnull(convert(varchar, ERROR_LINE()), '') + ' |
+ ' + isnull(ERROR_MESSAGE(), '') + ' |
+
'+ '
+
+
+ ';
+
+ set @mail_subject = 'INDEX - Transfert PharmIndex to PHGD_xx for items using checksum (Instance ' + @@SERVERNAME + ') - Job _D01941 - INDEX';
+
+ /* envoi du mail */
+ exec Arizona.dbo.aps_Send_Mail_with_template
+ @in_param_varchar_2 = 'HCI_PharmIndex;HCI_DataManagement',
+ @in_param_varchar_3 = @mail_message,
+ @in_param_subject = @mail_subject,
+ @in_job_type = 4;
+
+ end catch
+ go
+
+ /* step 3 - INDEX - Control if exist prescribers with same contract number than an OU */
+ use Arizona
+
+ declare @subject varchar(8000)
+ , @errmsg varchar(8000)
+
+ select @errmsg = 'Les pharmacies suivantes ont un concordat identique à celui d''un prescripteur actif'
+
+ select @errmsg = @errmsg + char(13) + char(10) + ou1.OU_code + char(9) + ou1.OU_short_name + char(9) + pr1.PHPR_contract_number
+ from PH_prescriber pr1 with (nolock)
+ join PH_prescriber pr2 with (nolock)
+ on pr2.PH_prescriber_GUID <> pr1.PH_prescriber_GUID
+ and pr2.PHPR_contract_number = pr1.PHPR_contract_number
+ and pr2.PHPR_status = pr1.PHPR_status
+ join Organizational_unit ou1 with (nolock)
+ on ou1.OU_address = pr1.PHPR_address
+ left outer join Organizational_unit ou2 with (nolock)
+ on ou2.OU_address = pr2.PHPR_address
+ where pr1.PHPR_status = 1
+ and ou2.Organizational_unit_ID is null
+ and exists(select 1
+ from OU_store_history oust with (nolock)
+ where oust.OUSH_organizational_unit = ou1.Organizational_unit_ID
+ and (oust.OUSH_end_date is null or oust.OUSH_end_date >= getdate()))
+ order by ou1.OU_code
+
+ if @@ROWCOUNT > 0
+ begin
+
+ select @subject = QUOTENAME(OBJECT_SCHEMA_NAME(@@PROCID))
+ +'.'+QUOTENAME(OBJECT_NAME(@@PROCID))
+
+ exec aps_Send_Mail_with_template
+ @in_param_varchar_2 = 'HCI_PharmIndex;HCI_DataManagement',
+ @in_param_varchar_3 = @errmsg,
+ @in_param_subject = @subject,
+ @in_job_type = 4;
+
+ end
+
+ go
+ /* step 4 - Update PEXF */
+ declare @cvPHGDPriceCodePEXF int,
+ @SubsidiaryId int,
+ @w_date date
+
+ select @SubsidiaryId = 1000,
+ @cvPHGDPriceCodePEXF = NULL,
+ @w_date = getdate()
+
+ exec arizona.dbo.sp_bmc_Bmc_Applic_Default
+ @in_job_type = 3,
+ @in_param_int_1 = NULL,
+ @in_param_int_2 = @SubsidiaryId,
+ @in_param_varchar_1 = 'cvPHGDPriceCodePSL1',
+ @out_default_value = @cvPHGDPriceCodePEXF output,
+ @out_param_int_1 = null
+
+
+ if @cvPHGDPriceCodePEXF is null
+ begin
+ select @SubsidiaryId = 100
+
+ exec arizona.dbo.sp_bmc_Bmc_Applic_Default
+ @in_job_type = 3,
+ @in_param_int_1 = NULL,
+ @in_param_int_2 = @SubsidiaryId,
+ @in_param_varchar_1 = 'cvPHGDPriceCodePSL1',
+ @out_default_value = @cvPHGDPriceCodePEXF output,
+ @out_param_int_1 = null
+ end
+
+ /*-------------
+ Fermeture des PEXF sans Adresse pour les articles avec insurance code not in (10, 11)
+ ------------------*/
+
+ Update top(5000) FP set fp.fp_end_date = DATEADD(d,-1,@w_date)
+ from subsidiary SUB with (nolock)
+
+ join price_code PRC with (nolock)
+ on prc.prc_subsidiary = sub.subsidiary_id
+ and prc.price_code_id = @cvPHGDPriceCodePEXF
+
+ join Fixed_price FP with (nolock)
+ on FP.FP_price_code = prc.price_code_id
+ and FP.fp_subsidiary = sub.subsidiary_id
+ and FP.FP_address is null
+ and FP.FP_start_date < GETDATE()
+ and ISNULL(fp.fp_end_date, '2099-12-31') > GETDATE()
+
+ join Item_key ITK with (nolock)
+ on itk.ITK_item = fp.fp_item
+ and ITK.ITK_subsidiary = SUB.Subsidiary_ID
+ and ITK.ITK_type = 1
+
+ join PH_item phit with (nolock)
+ on phit.PHIT_item = ITK.ITK_item
+ and phit.PHIT_insurance_code not in ('10', '11')
+
+ where SUB.subsidiary_id = @SubsidiaryId
+
+ /*---------------------------------------
+ Clôture du PEXF sans adresse à la date -1 de la start_date du prix PEXF avec adresse
+ pour les articles LS.
+
+ Nous recréons un PEXF avec la bonne start_date et le bon prix afin que la facturation aux caisse maladie soit OK
+ --------------*/
+
+ Update top(5000) FP1 set fp1.fp_end_date = DATEADD(d,-1,fp.FP_start_date)
+ from subsidiary SUB with (nolock)
+ join price_code PRC with (nolock)
+ on prc.prc_subsidiary = sub.subsidiary_id
+ and prc.price_code_id = @cvPHGDPriceCodePEXF
+
+ join Fixed_price FP with (nolock)
+ on FP.FP_price_code = prc.price_code_id
+ and FP.fp_subsidiary = sub.subsidiary_id
+ and FP.FP_address is not null
+ and FP.FP_start_date < GETDATE()
+ and ISNULL(fp.fp_end_date, '2099-12-31') > GETDATE()
+ and FP.fixed_price_id = (select top 1 fp2.fixed_price_id from Fixed_price FP2 with (nolock)
+ where FP2.FP_item = FP.FP_item
+ and FP2.FP_price_code = fp.FP_price_code
+ and FP2.fp_subsidiary = FP.fp_subsidiary
+ and FP2.FP_address is not null
+ and FP2.FP_start_date < GETDATE()
+ and ISNULL(FP2.fp_end_date, '2099-12-31') > GETDATE()
+
+ order by FP2.FP_start_date desc
+ )
+
+ join Item_key ITK with (nolock)
+ on itk.ITK_item = fp.fp_item
+ and ITK.ITK_subsidiary = SUB.Subsidiary_ID
+ and ITK.ITK_type = 1
+
+ join PH_item phit with (nolock)
+ on phit.PHIT_item = ITK.ITK_item
+ and phit.PHIT_insurance_code in ('10', '11')
+
+ join Fixed_price FP1 with (nolock)
+ on FP1.FP_price_code = prc.price_code_id
+ and FP1.fp_subsidiary = sub.subsidiary_id
+ and FP1.FP_address is null
+ and FP1.FP_start_date < GETDATE()
+ and ISNULL(FP1.fp_end_date, '2099-12-31') > GETDATE()
+ and FP1.FP_item = FP.FP_item
+
+ where SUB.subsidiary_id = @SubsidiaryId
+ and isnull(FP.FP_tax_free_price_per_unit,0) <> isnull(FP1.FP_tax_free_price_per_unit,0)
+
+ /*----------
+
+ Creation PEXF sans adresse avec start_date et prix du PEXF avec Adresse pour LS (Le plus récent)
+
+ ------------*/
+
+ declare
+
+ @New_fixed_price_ID int,
+ @nb_fixed_price int ,
+ @fp_subsidiary int,
+ @fp_tariff_type int,
+ @fp_item int,
+ @fp_currency int,
+ @fp_price_code int,
+ @fp_sales_tax_code int,
+ @FP_start_date datetime,
+ @FP_tax_free_price_per_unit dec(14,2)
+
+
+ SELECT @nb_fixed_price = 1
+
+ /*-- Declaration du curseur c_external_item --*/
+ declare c_FP cursor local forward_only read_only static for
+
+ select FP.fp_subsidiary,
+ FP.fp_tariff_type,
+ FP.fp_item,
+ FP.fp_currency,
+ FP.fp_price_code,
+ FP.fp_sales_tax_code,
+ FP.FP_start_date,
+ FP.FP_tax_free_price_per_unit
+
+ from subsidiary SUB with (nolock)
+
+ join price_code PRC with (nolock)
+ on prc.prc_subsidiary = sub.subsidiary_id
+ and prc.price_code_id = @cvPHGDPriceCodePEXF
+
+ join Fixed_price FP with (nolock)
+ on FP.FP_price_code = prc.price_code_id
+ and FP.fp_subsidiary = sub.subsidiary_id
+ and FP.FP_address is not null
+ and FP.FP_start_date < GETDATE()
+ and ISNULL(fp.fp_end_date, '2099-12-31') > GETDATE()
+ and FP.fixed_price_id = (select top 1 fp2.fixed_price_id from Fixed_price FP2 with (nolock)
+ where FP2.FP_item = FP.FP_item
+ and FP2.FP_price_code = fp.FP_price_code
+ and FP2.fp_subsidiary = FP.fp_subsidiary
+ and FP2.FP_address is not null
+ and FP2.FP_start_date < GETDATE()
+ and ISNULL(FP2.fp_end_date, '2099-12-31') > GETDATE()
+ order by FP2.FP_start_date desc
+ )
+
+ join Item_key ITK with (nolock)
+ on itk.ITK_item = fp.fp_item
+ and ITK.ITK_subsidiary = SUB.Subsidiary_ID
+ and ITK.ITK_type = 1
+
+ join PH_item phit with (nolock)
+ on phit.PHIT_item = ITK.ITK_item
+ and phit.PHIT_insurance_code in ('10', '11')
+
+ left outer join Fixed_price FP1 with (nolock)
+ on FP1.FP_price_code = prc.price_code_id
+ and FP1.fp_subsidiary = sub.subsidiary_id
+ and FP1.FP_address is null
+ and FP1.FP_start_date < GETDATE()
+ and ISNULL(FP1.fp_end_date, '2099-12-31') > GETDATE()
+ and FP1.FP_item = FP.FP_item
+
+ where SUB.subsidiary_id = @SubsidiaryId
+ and FP1.Fixed_price_ID is null
+
+ order by 1
+
+ open c_FP;
+
+ fetch next from c_FP
+ into @fp_subsidiary ,
+ @fp_tariff_type ,
+ @fp_item ,
+ @fp_currency ,
+ @fp_price_code ,
+ @fp_sales_tax_code ,
+ @FP_start_date ,
+ @FP_tax_free_price_per_unit
+
+ while (@@fetch_status <> -1 )
+ begin
+
+ if (@@fetch_status <> -2 )
+ begin
+
+ /*----- Recherche dernier ID pour Fixed_Price -----*/
+ select @New_fixed_price_ID = null
+
+ exec sp_bmc_GetNextID
+ @in_key = 'fixed_price',
+ @in_id_column = 'fixed_price_id',
+ @in_nbr_of_record = @nb_fixed_price,
+ @out_id = @New_fixed_price_id output
+
+ insert fixed_price
+ (fixed_price_id,
+
+ fp_subsidiary,
+ fp_tariff_type,
+ fp_item,
+ fp_currency,
+ fp_price_code,
+ fp_sales_tax_code,
+ fp_start_date,
+ fp_tax_free_price_per_unit ,
+
+ fp_unit_code,
+ FP_price_per_unit_unit_code,
+ fp_final_discount_possible,
+ FP_discount_level_1_possible,
+ FP_discount_level_2_possible,
+ FP_origin,
+ FP_remark
+
+ )
+ select
+ @New_fixed_price_id,
+
+ @fp_subsidiary ,
+ @fp_tariff_type ,
+ @fp_item ,
+ @fp_currency ,
+ @fp_price_code ,
+ @fp_sales_tax_code ,
+ @FP_start_date ,
+ @FP_tax_free_price_per_unit,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 'Automatic Insert PEXF '
+
+ /*----- fin du curseur -----*/
+
+
+ end /* (@@fetch_status <> -2 ) */
+
+ fetch next from c_FP
+ into @fp_subsidiary ,
+ @fp_tariff_type ,
+ @fp_item ,
+ @fp_currency ,
+ @fp_price_code ,
+ @fp_sales_tax_code ,
+ @FP_start_date ,
+ @FP_tax_free_price_per_unit
+
+ end /* (@@fetch_status <> -1 ) */
+
+ close c_FP;
+ deallocate c_FP;
+
ServerName: 'localhost'
DatabaseName: 'master'
AuthScheme: 'windowsAuthentication'