ALTER TABLE art_gestionali ALTER COLUMN c_centro_lavoro varchar(10)  NOT NULL
GO
ALTER TABLE art_gestionali_magazzino ALTER COLUMN c_centro_lavoro varchar(10) NOT NULL
GO
ALTER TABLE art_spedizione ALTER COLUMN c_centro_montaggio varchar(10) NOT NULL
GO
ALTER TABLE calendari_turni ALTER COLUMN c_centro_lavoro varchar(10) NOT NULL
GO
ALTER TABLE distinte_basi_esploso ALTER COLUMN c_centro_lavoro varchar(10) NOT NULL
GO
ALTER TABLE distinte_basi_esploso ALTER COLUMN c_centro_montaggio varchar(10) NOT NULL
GO
ALTER TABLE tab_centro_lavoro ALTER COLUMN c_centro_lavoro varchar(10) NOT NULL
GO
ALTER TABLE tab_part_program_testa ALTER COLUMN c_centro_lavoro varchar(10) NOT NULL
GO
ALTER TABLE tab_tipi_collo ALTER COLUMN c_centro_montaggio varchar(10) NOT NULL
GO
ALTER TABLE tab_part_program_testa ALTER COLUMN c_lavorazione varchar(10) NOT NULL
GO
ALTER TABLE tab_utenti ALTER COLUMN ds_utente varchar(250) NOT NULL
GO

alter table des_lingua_art_generali
alter column ds_estesa_lingua nvarchar(250) NOT NULL
go

alter table des_lingua_art_generali
alter column ds_aggiuntiva_lingua nvarchar(250) NOT NULL 
go



if OBJECT_ID('s3_sp_leggi_dati_mag_art') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_mag_art
go

CREATE PROCEDURE dbo.s3_sp_leggi_dati_mag_art
@c_articolo varchar(16),
@c_scheda varchar(8),
@c_magazzino varchar(3),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_griglia_varianti, A.c_categoria_preferenziale, A.immagine,
       A.ds_estesa, A.c_magazzino, A.fg_calcolo_prezzo_vendita,
       A.ds_aggiuntiva, A.fg_prodotto_finito, A.annullato, 
       A.fg_articolo_phantom,A.fg_articolo_alias, A.c_categoria_preferenziale_1,
       A.c_piano_codifica, A.fg_apertura_magazzino, A.radice, A.commento,
       A.fg_multilivello,A.fg_invisibile_multilivello,
       A.utente_modifica_annullato, A.dt_modifica_annullato, A.fg_elabora_costi,
----Dati amministrativi
       B.c_iva, B.c_um_fatturazione,B.c_conto_vendita, B.c_conto_vendita_estero,
       B.c_linea, B.fg_non_scontato, B.fg_esente_fattura,B.c_conto_vendita_extra_cee, B.n_id_interno n_id_amministrativi,
       B.c_um_fatturazione_acquisti, B.fg_escludi_da_provvigioni, B.fg_per_nota_accredito,
----Dati spedizione
       C.fg_e_collo, C.c_um_peso, C.c_um_volume, C.c_um_dimensioni c_um_dimensioni_sp,
       C.c_sigla_dim1 SDim1Sp, C.c_sigla_dim2 SDim2Sp, C.c_sigla_dim3 SDim3Sp,
       C.c_tipo_collo, C.n_qta_per_collo, C.c_raggr_articolo,
       C.n_peso_netto, C.n_peso_lordo, C.n_volume, C.n_dim1 n_dim_1_spedizione,
       C.n_dim2 n_dim_2_spedizione, C.n_dim3 n_dim_3_spedizione,
       C.c_centro_montaggio, C.fg_esente_ddt, C.n_id_interno n_id_spedizione,
       C.fg_collo_a_magazzino,C.fg_collificazione_unitaria,C.c_categoria_spedizione,
----Dati gestionali
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_um_dimensioni,
       D.c_sigla_dim1 SDim1Gs, D.c_sigla_dim2 SDim2Gs, D.c_sigla_dim3 SDim3Gs,
       D.fg_dim_obbligatoria1, D.fg_dim_obbligatoria2, D.fg_dim_obbligatoria3,
       D.n_dim1, D.n_dim2, D.n_dim3, 
   	   COALESCE(AGM.c_centro_lavoro, D.c_centro_lavoro) c_centro_lavoro,
	   D.c_griglia_magazzino,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.c_distinta_riferimento, D.c_scheda_distinta, D.c_raggr_art_per_of,
       D.n_dim1_min, D.n_dim2_min, D.n_dim3_min, D.n_passo_taglio,
       D.n_dim1_max, D.n_dim2_max, D.n_dim3_max,
       case 
	when COALESCE(ACM.fg_convalidato, 0) = 1 THEN ACM.ds_aggiuntiva
	ELSE D.ds_aggiuntiva
       end ds_aggiuntiva_gestionale, 
       D.c_fattore_conversione, D.n_id_interno n_id_gestionali,
       D.fg_acquista, D.fg_raggr_import_grafica,D.c_raggr_art_tempo,
       D.fg_flagvisibile, D.fg_flaggrafica, D.fg_tipoarticologr, 
       D.fg_articoloamisura, D.fg_flag2, D.oggettitipoaltern, 
       D.c_cneutrodoppiolato, D.cod_alternativo, D.c_oggettotipo, 
       D.c_tipologia, D.c_strato, 
       COALESCE(AGM.fg_coord_venatura_1,D.fg_coord_venatura_1) fg_coord_venatura_1, 
       COALESCE(AGM.fg_coord_venatura_2,D.fg_coord_venatura_2) fg_coord_venatura_2, 
       COALESCE(AGM.fg_coord_venatura_3,D.fg_coord_venatura_3) fg_coord_venatura_3,
       D.fg_db_opzioni, D.fg_blatovista2, D.fg_grafismosupadre, 
       D.n_lunghezzadente, D.n_divisoreqta, D.c_morfologia, 
       D.n_c_lung, D.n_c_larg, D.n_c_prof, 
       D.n_corrx, D.n_corry, D.n_corrz, 
       D.n_snapcorrx, D.n_snapcorry, D.n_snapcorrz,
       D.fg_global_atp, D.fg_articolo_montato, D.fg_imposta_rif_riga,
       COALESCE(AGM.fg_primo_gestito_montaggio ,D.fg_primo_gestito_montaggio) fg_primo_gestito_montaggio, 
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.n_lotto_economico,D.n_lotto_economico) n_lotto_economico,
       COALESCE(AGM.n_qta_multiplo,D.n_qta_multiplo) n_qta_multiplo,
       COALESCE(AGM.n_livello_minimo_riordino,D.n_livello_minimo_riordino) n_livello_minimo_riordino,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.fg_significativo,D.fg_significativo) fg_significativo,
       COALESCE(AGM.fg_movimenta_magazzino,D.fg_movimenta_magazzino) fg_movimenta_magazzino, 
       COALESCE(AGM.gg_ciclo_inventario,D.gg_ciclo_inventario) gg_ciclo_inventario,
       COALESCE(AGM.gg_scorta_minima,D.gg_scorta_minima) gg_scorta_minima,
       COALESCE(AGM.gg_approvvigionamento,D.gg_approvigionamento) gg_approvigionamento,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_zona_magazzino,D.c_zona_magazzino) c_zona_magazzino,
       COALESCE(AGM.ubicazione,D.ubicazione) ubicazione,
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.c_politica_pianificazione, D.c_politica_pianificazione) c_politica_pianificazione,
       COALESCE(AGM.gg_lead_time_sicurezza, D.gg_lead_time_sicurezza) gg_lead_time_sicurezza,
       COALESCE(AGM.c_magazzino_rifornimento, D.c_magazzino_rifornimento) c_magazzino_rifornimento,
       COALESCE(AGM.fg_calcolo_livello_riordino, D.fg_calcolo_livello_riordino) fg_calcolo_livello_riordino,
       COALESCE(AGM.gg_scorta_sicurezza, D.gg_scorta_sicurezza) gg_scorta_sicurezza,
       COALESCE(AGM.fg_calcolo_scorta_sicurezza, D.fg_calcolo_scorta_sicurezza) fg_calcolo_scorta_sicurezza,
       COALESCE(AGM.n_qta_minima_ordine, D.n_qta_minima_ordine) n_qta_minima_ordine,
       COALESCE(AGM.n_qta_massima_ordine, D.n_qta_massima_ordine) n_qta_massima_ordine,
       COALESCE(AGM.fg_politica_formazione_ordine, D.fg_politica_formazione_ordine) fg_politica_formazione_ordine,
       COALESCE(AGM.gg_orizzonte_pianificazione, D.gg_orizzonte_pianificazione) gg_orizzonte_pianificazione,
       COALESCE(AGM.gg_demand_time, D.gg_demand_time) gg_demand_time,
       COALESCE(AGM.gg_planning_time, D.gg_planning_time) gg_planning_time,
       COALESCE(AGM.fg_prelievo_logistica, D.fg_prelievo_logistica) fg_prelievo_logistica,
       COALESCE(AGM.gg_copertura, D.gg_copertura) gg_copertura,
       COALESCE(AGM.fg_allocabile, D.fg_allocabile) fg_allocabile,
       COALESCE(AGM.fg_calcolo_atp, D.fg_calcolo_atp) fg_calcolo_atp,
       COALESCE(AGM.fg_controllo_materiali, D.fg_controllo_materiali) fg_controllo_materiali,
       COALESCE(AGM.c_gruppo_acquisto, D.c_gruppo_acquisto) c_gruppo_acquisto,
       COALESCE(AGM.n_scorta_sicurezza, D.n_scorta_sicurezza) n_scorta_sicurezza,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gestione_anticipo, D.fg_tipo_gestione_anticipo) fg_tipo_gestione_anticipo,
       COALESCE(AGM.gg_anticipo, D.gg_anticipo) gg_anticipo,
       COALESCE(AGM.formula_gg_anticipo, D.formula_gg_anticipo) formula_gg_anticipo,
       COALESCE(AGM.fg_tipo_gestione_posticipo, D.fg_tipo_gestione_posticipo) fg_tipo_gestione_posticipo,
       COALESCE(AGM.gg_posticipo, D.gg_posticipo) gg_posticipo,
       COALESCE(AGM.formula_gg_posticipo, D.formula_gg_posticipo) formula_gg_posticipo,
       COALESCE(AGM.fg_tipo_gestione_sollecito, D.fg_tipo_gestione_sollecito) fg_tipo_gestione_sollecito,
       COALESCE(AGM.gg_sollecito, D.gg_sollecito) gg_sollecito,
       COALESCE(AGM.formula_sollecito, D.formula_sollecito) formula_sollecito,
       COALESCE(AGM.fg_gestione_previsioni, D.fg_gestione_previsioni) fg_gestione_previsioni,
       COALESCE(AGM.gg_orizzonte_previsioni, D.gg_orizzonte_previsioni) gg_orizzonte_previsioni,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.fg_creazione_mto_in_chiusura, D.fg_creazione_mto_in_chiusura) fg_creazione_mto_in_chiusura,
       COALESCE(AGM.gg_min_anticipo_per_messaggio, D.gg_min_anticipo_per_messaggio) gg_min_anticipo_per_messaggio,
       COALESCE(AGM.gg_min_posticipo_per_messaggio, D.gg_min_posticipo_per_messaggio) gg_min_posticipo_per_messaggio,
       COALESCE(AGM.fg_partecipa_popolarita, D.fg_partecipa_popolarita) fg_partecipa_popolarita,
----Il raggruppamento di pianificazione è solo nei gestionali per magazzino
       COALESCE(AGM.c_raggr_pianificazione, @elemento_netro) c_raggr_pianificazione,
       COALESCE(AGM.fg_slitta_consegne, D.fg_slitta_consegne) fg_slitta_consegne,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.fg_tipo_calcolo_atp, D.fg_tipo_calcolo_atp) fg_tipo_calcolo_atp,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.c_pianificatore, A.c_pianificatore) c_pianificatore,
       COALESCE(AGM.c_compratore, A.c_compratore) c_compratore,
       COALESCE(AGM.fg_matricola, D.fg_matricola) fg_matricola,
       COALESCE(AGM.c_regola_atp, D.c_regola_atp) c_regola_atp,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_gestito_da_logistica, D.fg_gestito_da_logistica) fg_gestito_da_logistica,
       COALESCE(AGM.c_ubicazione_predefinita_entrata, D.c_ubicazione_predefinita_entrata) c_ubicazione_predefinita_entrata,
       COALESCE(AGM.c_unita_carico_stoccaggio, D.c_unita_carico_stoccaggio) c_unita_carico_stoccaggio,
       COALESCE(AGM.fg_tipo_prelievo, D.fg_tipo_prelievo) fg_tipo_prelievo,
       COALESCE(AGM.fg_ordinamento_ubicazioni, D.fg_ordinamento_ubicazioni) fg_ordinamento_ubicazioni,       
       COALESCE(AGM.fg_coord_spaziale_x_rib_log, D.fg_coord_spaziale_x_rib_log) fg_coord_spaziale_x_rib_log,
       COALESCE(AGM.fg_coord_spaziale_y_rib_log, D.fg_coord_spaziale_y_rib_log) fg_coord_spaziale_y_rib_log,
       COALESCE(AGM.fg_coord_spaziale_z_rib_log, D.fg_coord_spaziale_z_rib_log) fg_coord_spaziale_z_rib_log,
       COALESCE(AGM.c_metodo_prelievo, D.c_metodo_prelievo) c_metodo_prelievo,
       COALESCE(AGM.fg_tipo_spunta, D.fg_tipo_spunta) fg_tipo_spunta,
       COALESCE(AGM.fg_controllo_abbinamento, D.fg_controllo_abbinamento) fg_controllo_abbinamento,
       COALESCE(AGM.fg_abbinabile, D.fg_abbinabile) fg_abbinabile,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_invio_fornitore, D.fg_invio_fornitore) fg_invio_fornitore,
       COALESCE(AGM.c_info_acquisti_1, D.c_info_acquisti_1) c_info_acquisti_1,
       COALESCE(AGM.c_info_acquisti_2, D.c_info_acquisti_2) c_info_acquisti_2,
       COALESCE(AGM.n_info_acquisti_3, D.n_info_acquisti_3) n_info_acquisti_3,     
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
       AST.c_scheda_secondaria,
       AGM.c_articolo esiste_art_magazzino, 
       TM.c_raggr_magazzino,
----Dati scheda tecnica
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       N.c_famiglia c_famiglia_scheda, N.c_modello c_modello_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec,
       AST.fg_ricalcola, AST.fg_rotazione_misure
FROM art_amministrativi B WITH (NOLOCK), art_spedizione C WITH (NOLOCK), art_generali A WITH (NOLOCK),
art_gestionali D WITH (NOLOCK), tab_magazzini TM WITH (NOLOCK), articolo_scheda_tecnica AST WITH (NOLOCK)
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = @c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = @c_magazzino
AND AGM.c_articolo = @c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria, 
schede_tecniche N WITH (NOLOCK), schede_tecniche M WITH (NOLOCK)
WHERE  N.c_scheda = @c_scheda
  AND A.c_articolo = @c_articolo
  AND B.c_articolo = @c_articolo
  AND C.c_articolo = @c_articolo
  AND B.n_id_interno = AST.n_id_amministrativi
  AND C.n_id_interno = AST.n_id_spedizione
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND TM.c_magazzino = @c_magazzino
  AND AST.c_magazzino_ast = @c_magazzino
  AND AST.c_articolo = @c_articolo
  AND AST.c_scheda = @c_scheda
  AND M.c_scheda = AST.c_scheda_secondaria
GO

if OBJECT_ID('s3_sp_leggi_dati_articolo') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_articolo
go

CREATE PROCEDURE dbo.s3_sp_leggi_dati_articolo
@c_articolo varchar(16),
@c_scheda varchar(8),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_griglia_varianti, A.c_categoria_preferenziale, A.immagine,
       A.ds_estesa, A.c_magazzino, A.fg_calcolo_prezzo_vendita,
       A.ds_aggiuntiva, A.fg_prodotto_finito, A.annullato, 
       A.fg_articolo_phantom,A.fg_articolo_alias, A.c_categoria_preferenziale_1,
       A.c_piano_codifica, A.fg_apertura_magazzino, A.radice, A.commento,
       A.fg_multilivello,A.fg_invisibile_multilivello,
       A.utente_modifica_annullato, A.dt_modifica_annullato, A.fg_elabora_costi,
----Dati amministrativi
       B.c_iva, B.c_um_fatturazione,B.c_conto_vendita, B.c_conto_vendita_estero,
       B.c_linea, B.fg_non_scontato, B.fg_esente_fattura,B.c_conto_vendita_extra_cee, B.n_id_interno n_id_amministrativi,
       B.c_um_fatturazione_acquisti,  B.fg_escludi_da_provvigioni, B.fg_per_nota_accredito,
----Dati spedizione
       C.fg_e_collo, C.c_um_peso, C.c_um_volume, C.c_um_dimensioni c_um_dimensioni_sp,
       C.c_sigla_dim1 SDim1Sp, C.c_sigla_dim2 SDim2Sp, C.c_sigla_dim3 SDim3Sp,
       C.c_tipo_collo, C.n_qta_per_collo, C.c_raggr_articolo,
       C.n_peso_netto, C.n_peso_lordo, C.n_volume, C.n_dim1 n_dim_1_spedizione,
       C.n_dim2 n_dim_2_spedizione, C.n_dim3 n_dim_3_spedizione,
       C.c_centro_montaggio, C.fg_esente_ddt, C.n_id_interno n_id_spedizione,
       C.fg_collo_a_magazzino,C.fg_collificazione_unitaria,C.c_categoria_spedizione,
----Dati gestionali
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_um_dimensioni,
       D.c_sigla_dim1 SDim1Gs, D.c_sigla_dim2 SDim2Gs, D.c_sigla_dim3 SDim3Gs,
       D.fg_dim_obbligatoria1, D.fg_dim_obbligatoria2, D.fg_dim_obbligatoria3,
       D.n_dim1, D.n_dim2, D.n_dim3, 
	   COALESCE(AGM.c_centro_lavoro, D.c_centro_lavoro) c_centro_lavoro,
	   D.c_griglia_magazzino,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.c_distinta_riferimento, D.c_scheda_distinta, D.c_raggr_art_per_of,
       D.n_dim1_min, D.n_dim2_min, D.n_dim3_min, D.n_passo_taglio,
       D.n_dim1_max, D.n_dim2_max, D.n_dim3_max,
       COALESCE(AGM.fg_coord_venatura_1,D.fg_coord_venatura_1) fg_coord_venatura_1, 
       COALESCE(AGM.fg_coord_venatura_2,D.fg_coord_venatura_2) fg_coord_venatura_2, 
       COALESCE(AGM.fg_coord_venatura_3,D.fg_coord_venatura_3) fg_coord_venatura_3,
       D.ds_aggiuntiva ds_aggiuntiva_gestionale, D.c_fattore_conversione, D.n_id_interno n_id_gestionali,
       D.fg_acquista, D.fg_raggr_import_grafica,
       D.fg_flagvisibile, D.fg_flaggrafica, D.fg_tipoarticologr, 
       D.fg_articoloamisura, D.fg_flag2, D.oggettitipoaltern, 
       D.c_cneutrodoppiolato, D.cod_alternativo, D.c_oggettotipo, 
       D.c_tipologia, D.c_strato, 
       D.fg_db_opzioni, D.fg_blatovista2, D.fg_grafismosupadre, 
       D.n_lunghezzadente, D.n_divisoreqta, D.c_morfologia, 
       D.n_c_lung, D.n_c_larg, D.n_c_prof, 
       D.n_corrx, D.n_corry, D.n_corrz, 
       D.n_snapcorrx, D.n_snapcorry, D.n_snapcorrz,
       D.fg_global_atp, D.fg_articolo_montato, D.fg_imposta_rif_riga,
       COALESCE(AGM.fg_primo_gestito_montaggio ,D.fg_primo_gestito_montaggio) fg_primo_gestito_montaggio, 
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.n_lotto_economico,D.n_lotto_economico) n_lotto_economico,
       COALESCE(AGM.n_qta_multiplo,D.n_qta_multiplo) n_qta_multiplo,
       COALESCE(AGM.n_livello_minimo_riordino,D.n_livello_minimo_riordino) n_livello_minimo_riordino,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.fg_significativo,D.fg_significativo) fg_significativo,
       COALESCE(AGM.fg_movimenta_magazzino,D.fg_movimenta_magazzino) fg_movimenta_magazzino, 
       COALESCE(AGM.gg_ciclo_inventario,D.gg_ciclo_inventario) gg_ciclo_inventario,
       COALESCE(AGM.gg_scorta_minima,D.gg_scorta_minima) gg_scorta_minima,
       COALESCE(AGM.gg_approvvigionamento,D.gg_approvigionamento) gg_approvigionamento,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_zona_magazzino,D.c_zona_magazzino) c_zona_magazzino,
       COALESCE(AGM.ubicazione,D.ubicazione) ubicazione,
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.c_politica_pianificazione, D.c_politica_pianificazione) c_politica_pianificazione,
       COALESCE(AGM.gg_lead_time_sicurezza, D.gg_lead_time_sicurezza) gg_lead_time_sicurezza,
       COALESCE(AGM.c_magazzino_rifornimento, D.c_magazzino_rifornimento) c_magazzino_rifornimento,
       COALESCE(AGM.fg_calcolo_livello_riordino, D.fg_calcolo_livello_riordino) fg_calcolo_livello_riordino,
       COALESCE(AGM.gg_scorta_sicurezza, D.gg_scorta_sicurezza) gg_scorta_sicurezza,
       COALESCE(AGM.fg_calcolo_scorta_sicurezza, D.fg_calcolo_scorta_sicurezza) fg_calcolo_scorta_sicurezza,
       COALESCE(AGM.n_qta_minima_ordine, D.n_qta_minima_ordine) n_qta_minima_ordine,
       COALESCE(AGM.n_qta_massima_ordine, D.n_qta_massima_ordine) n_qta_massima_ordine,
       COALESCE(AGM.fg_politica_formazione_ordine, D.fg_politica_formazione_ordine) fg_politica_formazione_ordine,
       COALESCE(AGM.gg_orizzonte_pianificazione, D.gg_orizzonte_pianificazione) gg_orizzonte_pianificazione,
       COALESCE(AGM.gg_demand_time, D.gg_demand_time) gg_demand_time,
       COALESCE(AGM.gg_planning_time, D.gg_planning_time) gg_planning_time,
       COALESCE(AGM.fg_prelievo_logistica, D.fg_prelievo_logistica) fg_prelievo_logistica,
       COALESCE(AGM.gg_copertura, D.gg_copertura) gg_copertura,
       COALESCE(AGM.fg_allocabile, D.fg_allocabile) fg_allocabile,
       COALESCE(AGM.fg_calcolo_atp, D.fg_calcolo_atp) fg_calcolo_atp,
       COALESCE(AGM.fg_controllo_materiali, D.fg_controllo_materiali) fg_controllo_materiali,
       COALESCE(AGM.c_gruppo_acquisto, D.c_gruppo_acquisto) c_gruppo_acquisto,
       COALESCE(AGM.n_scorta_sicurezza, D.n_scorta_sicurezza) n_scorta_sicurezza,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gestione_anticipo, D.fg_tipo_gestione_anticipo) fg_tipo_gestione_anticipo,
       COALESCE(AGM.gg_anticipo, D.gg_anticipo) gg_anticipo,
       COALESCE(AGM.formula_gg_anticipo, D.formula_gg_anticipo) formula_gg_anticipo,
       COALESCE(AGM.fg_tipo_gestione_posticipo, D.fg_tipo_gestione_posticipo) fg_tipo_gestione_posticipo,
       COALESCE(AGM.gg_posticipo, D.gg_posticipo) gg_posticipo,
       COALESCE(AGM.formula_gg_posticipo, D.formula_gg_posticipo) formula_gg_posticipo,
       COALESCE(AGM.fg_tipo_gestione_sollecito, D.fg_tipo_gestione_sollecito) fg_tipo_gestione_sollecito,
       COALESCE(AGM.gg_sollecito, D.gg_sollecito) gg_sollecito,
       COALESCE(AGM.formula_sollecito, D.formula_sollecito) formula_sollecito,
       COALESCE(AGM.fg_gestione_previsioni, D.fg_gestione_previsioni) fg_gestione_previsioni,
       COALESCE(AGM.gg_orizzonte_previsioni, D.gg_orizzonte_previsioni) gg_orizzonte_previsioni,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.fg_creazione_mto_in_chiusura, D.fg_creazione_mto_in_chiusura) fg_creazione_mto_in_chiusura,
       COALESCE(AGM.gg_min_anticipo_per_messaggio, D.gg_min_anticipo_per_messaggio) gg_min_anticipo_per_messaggio,
       COALESCE(AGM.gg_min_posticipo_per_messaggio, D.gg_min_posticipo_per_messaggio) gg_min_posticipo_per_messaggio,
       COALESCE(AGM.fg_partecipa_popolarita, D.fg_partecipa_popolarita) fg_partecipa_popolarita,
----Il raggruppamento di pianificazione è solo nei gestionali per magazzino
       COALESCE(AGM.c_raggr_pianificazione, @elemento_netro) c_raggr_pianificazione,
       COALESCE(AGM.fg_slitta_consegne, D.fg_slitta_consegne) fg_slitta_consegne,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.fg_tipo_calcolo_atp, D.fg_tipo_calcolo_atp) fg_tipo_calcolo_atp,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.c_pianificatore, A.c_pianificatore) c_pianificatore,
       COALESCE(AGM.c_compratore, A.c_compratore) c_compratore,
       COALESCE(AGM.fg_matricola, D.fg_matricola) fg_matricola,
       COALESCE(AGM.c_regola_atp, D.c_regola_atp) c_regola_atp,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_gestito_da_logistica, D.fg_gestito_da_logistica) fg_gestito_da_logistica,
       COALESCE(AGM.c_ubicazione_predefinita_entrata, D.c_ubicazione_predefinita_entrata) c_ubicazione_predefinita_entrata,
       COALESCE(AGM.c_unita_carico_stoccaggio, D.c_unita_carico_stoccaggio) c_unita_carico_stoccaggio,
       COALESCE(AGM.fg_tipo_prelievo, D.fg_tipo_prelievo) fg_tipo_prelievo,
       COALESCE(AGM.fg_ordinamento_ubicazioni, D.fg_ordinamento_ubicazioni) fg_ordinamento_ubicazioni,       
       COALESCE(AGM.fg_coord_spaziale_x_rib_log, D.fg_coord_spaziale_x_rib_log) fg_coord_spaziale_x_rib_log,
       COALESCE(AGM.fg_coord_spaziale_y_rib_log, D.fg_coord_spaziale_y_rib_log) fg_coord_spaziale_y_rib_log,
       COALESCE(AGM.fg_coord_spaziale_z_rib_log, D.fg_coord_spaziale_z_rib_log) fg_coord_spaziale_z_rib_log,
       COALESCE(AGM.c_metodo_prelievo, D.c_metodo_prelievo) c_metodo_prelievo,
       COALESCE(AGM.fg_controllo_abbinamento, D.fg_controllo_abbinamento) fg_controllo_abbinamento,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_abbinabile, D.fg_abbinabile) fg_abbinabile,
       COALESCE(AGM.fg_invio_fornitore, D.fg_invio_fornitore) fg_invio_fornitore,
       COALESCE(AGM.c_info_acquisti_1, D.c_info_acquisti_1) c_info_acquisti_1,
       COALESCE(AGM.c_info_acquisti_2, D.c_info_acquisti_2) c_info_acquisti_2,
       COALESCE(AGM.n_info_acquisti_3, D.n_info_acquisti_3) n_info_acquisti_3,     
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
       AST.c_scheda_secondaria,
       AGM.c_articolo esiste_art_magazzino, 
       TM.c_raggr_magazzino,
----Dati scheda tecnica
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       N.c_famiglia c_famiglia_scheda, N.c_modello c_modello_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec, D.c_raggr_art_tempo,
       AST.fg_ricalcola, AST.fg_rotazione_misure
FROM art_amministrativi B WITH (NOLOCK), art_spedizione C WITH (NOLOCK),
art_generali A WITH (NOLOCK), art_gestionali D WITH (NOLOCK),
tab_magazzini TM WITH (NOLOCK), articolo_scheda_tecnica AST WITH (NOLOCK)
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = AST.c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = AST.c_magazzino_ast
AND AGM.c_articolo = AST.c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria, 
schede_tecniche N WITH (NOLOCK), schede_tecniche M WITH (NOLOCK)
WHERE  N.c_scheda = @c_scheda
  AND A.c_articolo = @c_articolo
  AND B.c_articolo = @c_articolo
  AND C.c_articolo = @c_articolo
  AND B.n_id_interno = AST.n_id_amministrativi
  AND C.n_id_interno = AST.n_id_spedizione
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND A.c_magazzino = TM.c_magazzino
  AND AST.c_magazzino_ast = A.c_magazzino
  AND AST.c_articolo = A.c_articolo
  AND AST.c_scheda = @c_scheda
  AND M.c_scheda = AST.c_scheda_secondaria
GO

if OBJECT_ID('s3_sp_leggi_dati_articolo_atp') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_articolo_atp
go

CREATE PROCEDURE s3_sp_leggi_dati_articolo_atp
@c_articolo varchar(16),
@c_scheda varchar(8),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_magazzino, A.fg_prodotto_finito, A.fg_apertura_magazzino,
----Dati gestionali
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.fg_tipo_calcolo_atp, D.fg_tipo_calcolo_atp) fg_tipo_calcolo_atp,
       COALESCE(AGM.fg_calcolo_atp, D.fg_calcolo_atp) fg_calcolo_atp,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.c_regola_atp, D.c_regola_atp) c_regola_atp,
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_primo_gestito_montaggio ,D.fg_primo_gestito_montaggio) fg_primo_gestito_montaggio, 
       COALESCE(AGM.gg_lead_time_pianificazione, D.gg_lead_time_pianificazione) gg_lead_time_pianificazione,
       COALESCE(AGM.gg_lead_time_controllo, D.gg_lead_time_controllo) gg_lead_time_controllo,
       COALESCE(AGM.c_tipologia_art_ritiro, D.c_tipologia_art_ritiro) c_tipologia_art_ritiro,
       AST.c_scheda_secondaria, D.c_griglia_magazzino,
       AGM.c_articolo esiste_art_magazzino, 
       TM.c_raggr_magazzino,
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_fattore_conversione,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.n_dim1, D.n_dim2, D.n_dim3,
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
----Dati scheda tecnica
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec, 
       AST.fg_ricalcola, AST.n_id_gestionali, AST.fg_rotazione_misure
FROM art_generali A WITH (NOLOCK),art_gestionali D WITH (NOLOCK),
tab_magazzini TM WITH (NOLOCK), articolo_scheda_tecnica AST  WITH (NOLOCK)
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = AST.c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = AST.c_magazzino_ast
AND AGM.c_articolo = AST.c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria, 
schede_tecniche N WITH (NOLOCK), schede_tecniche M WITH (NOLOCK)
WHERE  N.c_scheda = @c_scheda
  AND A.c_articolo = @c_articolo
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND A.c_magazzino = TM.c_magazzino
  AND AST.c_magazzino_ast = A.c_magazzino
  AND AST.c_articolo = A.c_articolo
  AND AST.c_scheda = @c_scheda
  AND M.c_scheda = AST.c_scheda_secondaria
GO


if OBJECT_ID('s3_sp_leggi_dati_articolo_mrp') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_articolo_mrp
go

CREATE PROCEDURE dbo.s3_sp_leggi_dati_articolo_mrp
@c_articolo varchar(16),
@c_scheda varchar(8),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_magazzino, A.fg_prodotto_finito, A.fg_apertura_magazzino,
----Dati amministrativi
       B.c_um_fatturazione_acquisti, 
----Dati gestionali
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_politica_pianificazione, D.c_politica_pianificazione) c_politica_pianificazione,
       COALESCE(AGM.gg_orizzonte_pianificazione, D.gg_orizzonte_pianificazione) gg_orizzonte_pianificazione,
       COALESCE(AGM.gg_copertura, D.gg_copertura) gg_copertura,
       COALESCE(AGM.n_lotto_economico,D.n_lotto_economico) n_lotto_economico,
       COALESCE(AGM.n_qta_multiplo,D.n_qta_multiplo) n_qta_multiplo,
       COALESCE(AGM.n_livello_minimo_riordino,D.n_livello_minimo_riordino) n_livello_minimo_riordino,
       COALESCE(AGM.fg_politica_formazione_ordine, D.fg_politica_formazione_ordine) fg_politica_formazione_ordine,
       COALESCE(AGM.fg_calcolo_livello_riordino, D.fg_calcolo_livello_riordino) fg_calcolo_livello_riordino,
       COALESCE(AGM.gg_scorta_sicurezza, D.gg_scorta_sicurezza) gg_scorta_sicurezza,
       COALESCE(AGM.fg_calcolo_scorta_sicurezza, D.fg_calcolo_scorta_sicurezza) fg_calcolo_scorta_sicurezza,
       COALESCE(AGM.n_qta_minima_ordine, D.n_qta_minima_ordine) n_qta_minima_ordine,
       COALESCE(AGM.n_qta_massima_ordine, D.n_qta_massima_ordine) n_qta_massima_ordine,
       COALESCE(AGM.n_scorta_sicurezza, D.n_scorta_sicurezza) n_scorta_sicurezza,
       COALESCE(AGM.gg_lead_time_sicurezza, D.gg_lead_time_sicurezza) gg_lead_time_sicurezza,
       COALESCE(AGM.gg_approvvigionamento,D.gg_approvigionamento) gg_approvigionamento,
----Il raggruppamento di pianificazione esiste solo nei gestionali per magazzino
       COALESCE(AGM.c_raggr_pianificazione, @elemento_netro) c_raggr_pianificazione,
       COALESCE(AGM.fg_controllo_materiali, D.fg_controllo_materiali) fg_controllo_materiali,
       COALESCE(AGM.c_pianificatore, A.c_pianificatore) c_pianificatore,
       COALESCE(AGM.c_compratore, A.c_compratore) c_compratore,
       COALESCE(AGM.ubicazione,D.ubicazione) ubicazione,
       COALESCE(AGM.fg_gestione_previsioni, D.fg_gestione_previsioni) fg_gestione_previsioni,
       COALESCE(AGM.gg_orizzonte_previsioni, D.gg_orizzonte_previsioni) gg_orizzonte_previsioni,
       COALESCE(AGM.fg_partecipa_popolarita, D.fg_partecipa_popolarita) fg_partecipa_popolarita,
       COALESCE(AGM.fg_tipo_gestione_anticipo, D.fg_tipo_gestione_anticipo) fg_tipo_gestione_anticipo,
       COALESCE(AGM.gg_anticipo, D.gg_anticipo) gg_anticipo,
       COALESCE(AGM.formula_gg_anticipo, D.formula_gg_anticipo) formula_gg_anticipo,
       COALESCE(AGM.fg_tipo_gestione_posticipo, D.fg_tipo_gestione_posticipo) fg_tipo_gestione_posticipo,
       COALESCE(AGM.gg_posticipo, D.gg_posticipo) gg_posticipo,
       COALESCE(AGM.formula_gg_posticipo, D.formula_gg_posticipo) formula_gg_posticipo,
       COALESCE(AGM.fg_tipo_gestione_sollecito, D.fg_tipo_gestione_sollecito) fg_tipo_gestione_sollecito,
       COALESCE(AGM.gg_sollecito, D.gg_sollecito) gg_sollecito,
       COALESCE(AGM.formula_sollecito, D.formula_sollecito) formula_sollecito,
       COALESCE(AGM.gg_min_anticipo_per_messaggio, D.gg_min_anticipo_per_messaggio) gg_min_anticipo_per_messaggio,
       COALESCE(AGM.gg_min_posticipo_per_messaggio, D.gg_min_posticipo_per_messaggio) gg_min_posticipo_per_messaggio,
       COALESCE(AGM.gg_min_sollecito_per_messaggio, D.gg_min_sollecito_per_messaggio) gg_min_sollecito_per_messaggio,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_controllo_abbinamento, D.fg_controllo_abbinamento) fg_controllo_abbinamento,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_abbinabile, D.fg_abbinabile) fg_abbinabile,
       COALESCE(AGM.fg_um_in_mrp, D.fg_um_in_mrp) fg_um_in_mrp,
       COALESCE(AGM.gg_lead_time_pianificazione, D.gg_lead_time_pianificazione) gg_lead_time_pianificazione,
       COALESCE(AGM.gg_lead_time_controllo, D.gg_lead_time_controllo) gg_lead_time_controllo,
       COALESCE(AGM.c_classe_semaforo, D.c_classe_semaforo) c_classe_semaforo,
       COALESCE(AGM.fg_tipo_calcolo_semaforo, D.fg_tipo_calcolo_semaforo) fg_tipo_calcolo_semaforo,
       COALESCE(AGM.c_tipologia_art_ritiro, D.c_tipologia_art_ritiro) c_tipologia_art_ritiro,
       AST.c_scheda_secondaria, D.c_griglia_magazzino,
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_fattore_conversione,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.n_dim1, D.n_dim2, D.n_dim3, D.c_um_dimensioni, D.fg_acquista, 
       D.c_sigla_dim1, D.c_sigla_dim2, D.c_sigla_dim3, 
	   COALESCE(AGM.c_centro_lavoro, D.c_centro_lavoro) c_centro_lavoro,
	   D.c_raggr_art_per_of,
	   D.n_id_interno,
----Dati scheda tecnica
       AGM.c_articolo esiste_art_magazzino, 
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec, 
       TM.c_raggr_magazzino, AST.fg_ricalcola, AST.n_id_gestionali, AST.fg_rotazione_misure
FROM art_generali A WITH (NOLOCK), art_amministrativi B WITH (NOLOCK), art_gestionali D WITH (NOLOCK),
tab_magazzini TM WITH (NOLOCK), articolo_scheda_tecnica AST WITH (NOLOCK)
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = AST.c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = AST.c_magazzino_ast
AND AGM.c_articolo = AST.c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria, 
schede_tecniche N WITH (NOLOCK), schede_tecniche M WITH (NOLOCK)
WHERE  N.c_scheda = @c_scheda
  AND A.c_articolo = @c_articolo
  AND B.n_id_interno = AST.n_id_amministrativi
  AND B.c_articolo = @c_articolo
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND A.c_magazzino = TM.c_magazzino
  AND AST.c_magazzino_ast = A.c_magazzino
  AND AST.c_articolo = A.c_articolo
  AND AST.c_scheda = @c_scheda
  AND M.c_scheda = AST.c_scheda_secondaria
GO


if OBJECT_ID('s3_sp_leggi_dati_mag_art_atp') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_mag_art_atp
go

CREATE PROCEDURE dbo.s3_sp_leggi_dati_mag_art_atp
@c_articolo varchar(16),
@c_scheda varchar(8),
@c_magazzino varchar(3),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_magazzino, A.fg_prodotto_finito, A.fg_apertura_magazzino,
----Dati gestionali
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.fg_tipo_calcolo_atp, D.fg_tipo_calcolo_atp) fg_tipo_calcolo_atp,
       COALESCE(AGM.fg_calcolo_atp, D.fg_calcolo_atp) fg_calcolo_atp,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.c_regola_atp, D.c_regola_atp) c_regola_atp,
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_primo_gestito_montaggio ,D.fg_primo_gestito_montaggio) fg_primo_gestito_montaggio, 
       COALESCE(AGM.gg_lead_time_pianificazione, D.gg_lead_time_pianificazione) gg_lead_time_pianificazione,
       COALESCE(AGM.gg_lead_time_controllo, D.gg_lead_time_controllo) gg_lead_time_controllo,
       COALESCE(AGM.c_tipologia_art_ritiro, D.c_tipologia_art_ritiro) c_tipologia_art_ritiro,
       AST.c_scheda_secondaria, D.c_griglia_magazzino,
       AGM.c_articolo esiste_art_magazzino, 
       TM.c_raggr_magazzino,
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_fattore_conversione,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.n_dim1, D.n_dim2, D.n_dim3,
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
----Dati scheda tecnica
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec,
       AST.fg_ricalcola, AST.n_id_gestionali, AST.fg_rotazione_misure
FROM art_generali A WITH (NOLOCK), art_gestionali D WITH (NOLOCK), 
schede_tecniche N WITH (NOLOCK), schede_tecniche M WITH (NOLOCK), 
tab_magazzini TM WITH (NOLOCK), articolo_scheda_tecnica AST WITH (NOLOCK)
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = @c_magazzino
AND AGM.c_articolo = @c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = AST.c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
WHERE A.c_articolo = @c_articolo
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND AST.c_magazzino_ast = @c_magazzino
  AND AST.c_articolo = @c_articolo
  AND AST.c_scheda = @c_scheda
  AND N.c_scheda = @c_scheda
  AND A.c_magazzino = TM.c_magazzino
  AND M.c_scheda = AST.c_scheda_secondaria
GO


if OBJECT_ID('s3_sp_leggi_dati_mag_art_mrp') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_mag_art_mrp
go

CREATE PROCEDURE dbo.s3_sp_leggi_dati_mag_art_mrp
@c_articolo varchar(16),
@c_scheda varchar(8),
@c_magazzino varchar(3),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_magazzino, A.fg_prodotto_finito, A.fg_apertura_magazzino,
----Dati amministrativi
       B.c_um_fatturazione_acquisti, 
----Dati gestionali
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_politica_pianificazione, D.c_politica_pianificazione) c_politica_pianificazione,
       COALESCE(AGM.gg_orizzonte_pianificazione, D.gg_orizzonte_pianificazione) gg_orizzonte_pianificazione,
       COALESCE(AGM.gg_copertura, D.gg_copertura) gg_copertura,
       COALESCE(AGM.n_lotto_economico,D.n_lotto_economico) n_lotto_economico,
       COALESCE(AGM.n_qta_multiplo,D.n_qta_multiplo) n_qta_multiplo,
       COALESCE(AGM.n_livello_minimo_riordino,D.n_livello_minimo_riordino) n_livello_minimo_riordino,
       COALESCE(AGM.fg_politica_formazione_ordine, D.fg_politica_formazione_ordine) fg_politica_formazione_ordine,
       COALESCE(AGM.fg_calcolo_livello_riordino, D.fg_calcolo_livello_riordino) fg_calcolo_livello_riordino,
       COALESCE(AGM.gg_scorta_sicurezza, D.gg_scorta_sicurezza) gg_scorta_sicurezza,
       COALESCE(AGM.fg_calcolo_scorta_sicurezza, D.fg_calcolo_scorta_sicurezza) fg_calcolo_scorta_sicurezza,
       COALESCE(AGM.n_qta_minima_ordine, D.n_qta_minima_ordine) n_qta_minima_ordine,
       COALESCE(AGM.n_qta_massima_ordine, D.n_qta_massima_ordine) n_qta_massima_ordine,
       COALESCE(AGM.n_scorta_sicurezza, D.n_scorta_sicurezza) n_scorta_sicurezza,
       COALESCE(AGM.gg_lead_time_sicurezza, D.gg_lead_time_sicurezza) gg_lead_time_sicurezza,
       COALESCE(AGM.gg_approvvigionamento,D.gg_approvigionamento) gg_approvigionamento,
----Il raggruppamento di pianificazione esiste solo nei gestionali per magazzino
       COALESCE(AGM.c_raggr_pianificazione, @elemento_netro) c_raggr_pianificazione,
       COALESCE(AGM.fg_controllo_materiali, D.fg_controllo_materiali) fg_controllo_materiali,
       COALESCE(AGM.c_pianificatore, A.c_pianificatore) c_pianificatore,
       COALESCE(AGM.c_compratore, A.c_compratore) c_compratore,
       COALESCE(AGM.ubicazione,D.ubicazione) ubicazione,
       COALESCE(AGM.fg_gestione_previsioni, D.fg_gestione_previsioni) fg_gestione_previsioni,
       COALESCE(AGM.gg_orizzonte_previsioni, D.gg_orizzonte_previsioni) gg_orizzonte_previsioni,
       COALESCE(AGM.fg_partecipa_popolarita, D.fg_partecipa_popolarita) fg_partecipa_popolarita,
       COALESCE(AGM.fg_tipo_gestione_anticipo, D.fg_tipo_gestione_anticipo) fg_tipo_gestione_anticipo,
       COALESCE(AGM.gg_anticipo, D.gg_anticipo) gg_anticipo,
       COALESCE(AGM.formula_gg_anticipo, D.formula_gg_anticipo) formula_gg_anticipo,
       COALESCE(AGM.fg_tipo_gestione_posticipo, D.fg_tipo_gestione_posticipo) fg_tipo_gestione_posticipo,
       COALESCE(AGM.gg_posticipo, D.gg_posticipo) gg_posticipo,
       COALESCE(AGM.formula_gg_posticipo, D.formula_gg_posticipo) formula_gg_posticipo,
       COALESCE(AGM.fg_tipo_gestione_sollecito, D.fg_tipo_gestione_sollecito) fg_tipo_gestione_sollecito,
       COALESCE(AGM.gg_sollecito, D.gg_sollecito) gg_sollecito,
       COALESCE(AGM.formula_sollecito, D.formula_sollecito) formula_sollecito,
       COALESCE(AGM.gg_min_anticipo_per_messaggio, D.gg_min_anticipo_per_messaggio) gg_min_anticipo_per_messaggio,
       COALESCE(AGM.gg_min_posticipo_per_messaggio, D.gg_min_posticipo_per_messaggio) gg_min_posticipo_per_messaggio,
       COALESCE(AGM.gg_min_sollecito_per_messaggio, D.gg_min_sollecito_per_messaggio) gg_min_sollecito_per_messaggio,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_controllo_abbinamento, D.fg_controllo_abbinamento) fg_controllo_abbinamento,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_abbinabile, D.fg_abbinabile) fg_abbinabile,
       COALESCE(AGM.fg_um_in_mrp, D.fg_um_in_mrp) fg_um_in_mrp,
       COALESCE(AGM.gg_lead_time_pianificazione, D.gg_lead_time_pianificazione) gg_lead_time_pianificazione,
       COALESCE(AGM.gg_lead_time_controllo, D.gg_lead_time_controllo) gg_lead_time_controllo,
       COALESCE(AGM.c_classe_semaforo, D.c_classe_semaforo) c_classe_semaforo,
       COALESCE(AGM.fg_tipo_calcolo_semaforo, D.fg_tipo_calcolo_semaforo) fg_tipo_calcolo_semaforo,
       COALESCE(AGM.c_tipologia_art_ritiro, D.c_tipologia_art_ritiro) c_tipologia_art_ritiro,
       AST.c_scheda_secondaria, D.c_griglia_magazzino,
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_fattore_conversione,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.n_dim1, D.n_dim2, D.n_dim3, D.c_um_dimensioni, D.fg_acquista, 
       D.c_sigla_dim1, D.c_sigla_dim2, D.c_sigla_dim3, 
	   COALESCE(AGM.c_centro_lavoro, D.c_centro_lavoro) c_centro_lavoro,
	   D.c_raggr_art_per_of,
	   D.n_id_interno,
----Dati scheda tecnica
       AGM.c_articolo esiste_art_magazzino, 
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec, 
       TM.c_raggr_magazzino, AST.fg_ricalcola, AST.n_id_gestionali, AST.fg_rotazione_misure
FROM art_generali A WITH (NOLOCK), art_amministrativi B WITH (NOLOCK),
art_gestionali D WITH (NOLOCK), schede_tecniche N WITH (NOLOCK),
schede_tecniche M WITH (NOLOCK), tab_magazzini TM WITH (NOLOCK),
articolo_scheda_tecnica AST WITH (NOLOCK)
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = @c_magazzino
AND AGM.c_articolo = @c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = AST.c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
WHERE A.c_articolo = @c_articolo
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND AST.c_magazzino_ast = @c_magazzino
  AND AST.c_articolo = @c_articolo
  AND AST.c_scheda = @c_scheda
  AND N.c_scheda = @c_scheda
  AND B.n_id_interno = AST.n_id_amministrativi
  AND B.c_articolo = @c_articolo
  AND A.c_magazzino = TM.c_magazzino
  AND M.c_scheda = AST.c_scheda_secondaria
GO


if OBJECT_ID('s3_sp_leggi_dati_mag_art') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_mag_art
go

CREATE PROCEDURE dbo.s3_sp_leggi_dati_mag_art
@c_articolo varchar(16),
@c_scheda varchar(8),
@c_magazzino varchar(3),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_griglia_varianti, A.c_categoria_preferenziale, A.immagine,
       A.ds_estesa, A.c_magazzino, A.fg_calcolo_prezzo_vendita,
       A.ds_aggiuntiva, A.fg_prodotto_finito, A.annullato, 
       A.fg_articolo_phantom,A.fg_articolo_alias, A.c_categoria_preferenziale_1,
       A.c_piano_codifica, A.fg_apertura_magazzino, A.radice, A.commento,
       A.fg_multilivello,A.fg_invisibile_multilivello,
       A.utente_modifica_annullato, A.dt_modifica_annullato, A.fg_elabora_costi,
----Dati amministrativi
       B.c_iva, B.c_um_fatturazione,B.c_conto_vendita, B.c_conto_vendita_estero,
       B.c_linea, B.fg_non_scontato, B.fg_esente_fattura,B.c_conto_vendita_extra_cee, B.n_id_interno n_id_amministrativi,
       B.c_um_fatturazione_acquisti, B.fg_escludi_da_provvigioni, B.fg_per_nota_accredito,
----Dati spedizione
       C.fg_e_collo, C.c_um_peso, C.c_um_volume, C.c_um_dimensioni c_um_dimensioni_sp,
       C.c_sigla_dim1 SDim1Sp, C.c_sigla_dim2 SDim2Sp, C.c_sigla_dim3 SDim3Sp,
       C.c_tipo_collo, C.n_qta_per_collo, C.c_raggr_articolo,
       C.n_peso_netto, C.n_peso_lordo, C.n_volume, C.n_dim1 n_dim_1_spedizione,
       C.n_dim2 n_dim_2_spedizione, C.n_dim3 n_dim_3_spedizione,
       C.c_centro_montaggio, C.fg_esente_ddt, C.n_id_interno n_id_spedizione,
       C.fg_collo_a_magazzino,C.fg_collificazione_unitaria,C.c_categoria_spedizione,
----Dati gestionali
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_um_dimensioni,
       D.c_sigla_dim1 SDim1Gs, D.c_sigla_dim2 SDim2Gs, D.c_sigla_dim3 SDim3Gs,
       D.fg_dim_obbligatoria1, D.fg_dim_obbligatoria2, D.fg_dim_obbligatoria3,
       D.n_dim1, D.n_dim2, D.n_dim3, 
   	   COALESCE(AGM.c_centro_lavoro, D.c_centro_lavoro) c_centro_lavoro,
	   D.c_griglia_magazzino,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.c_distinta_riferimento, D.c_scheda_distinta, D.c_raggr_art_per_of,
       D.n_dim1_min, D.n_dim2_min, D.n_dim3_min, D.n_passo_taglio,
       D.n_dim1_max, D.n_dim2_max, D.n_dim3_max,
       case 
	when COALESCE(ACM.fg_convalidato, 0) = 1 THEN ACM.ds_aggiuntiva
	ELSE D.ds_aggiuntiva
       end ds_aggiuntiva_gestionale, 
       D.c_fattore_conversione, D.n_id_interno n_id_gestionali,
       D.fg_acquista, D.fg_raggr_import_grafica,D.c_raggr_art_tempo,
       D.fg_flagvisibile, D.fg_flaggrafica, D.fg_tipoarticologr, 
       D.fg_articoloamisura, D.fg_flag2, D.oggettitipoaltern, 
       D.c_cneutrodoppiolato, D.cod_alternativo, D.c_oggettotipo, 
       D.c_tipologia, D.c_strato, 
       COALESCE(AGM.fg_coord_venatura_1,D.fg_coord_venatura_1) fg_coord_venatura_1, 
       COALESCE(AGM.fg_coord_venatura_2,D.fg_coord_venatura_2) fg_coord_venatura_2, 
       COALESCE(AGM.fg_coord_venatura_3,D.fg_coord_venatura_3) fg_coord_venatura_3,
       D.fg_db_opzioni, D.fg_blatovista2, D.fg_grafismosupadre, 
       D.n_lunghezzadente, D.n_divisoreqta, D.c_morfologia, 
       D.n_c_lung, D.n_c_larg, D.n_c_prof, 
       D.n_corrx, D.n_corry, D.n_corrz, 
       D.n_snapcorrx, D.n_snapcorry, D.n_snapcorrz,
       D.fg_global_atp, D.fg_articolo_montato, D.fg_imposta_rif_riga,
       COALESCE(AGM.fg_primo_gestito_montaggio ,D.fg_primo_gestito_montaggio) fg_primo_gestito_montaggio, 
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.n_lotto_economico,D.n_lotto_economico) n_lotto_economico,
       COALESCE(AGM.n_qta_multiplo,D.n_qta_multiplo) n_qta_multiplo,
       COALESCE(AGM.n_livello_minimo_riordino,D.n_livello_minimo_riordino) n_livello_minimo_riordino,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.fg_significativo,D.fg_significativo) fg_significativo,
       COALESCE(AGM.fg_movimenta_magazzino,D.fg_movimenta_magazzino) fg_movimenta_magazzino, 
       COALESCE(AGM.gg_ciclo_inventario,D.gg_ciclo_inventario) gg_ciclo_inventario,
       COALESCE(AGM.gg_scorta_minima,D.gg_scorta_minima) gg_scorta_minima,
       COALESCE(AGM.gg_approvvigionamento,D.gg_approvigionamento) gg_approvigionamento,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_zona_magazzino,D.c_zona_magazzino) c_zona_magazzino,
       COALESCE(AGM.ubicazione,D.ubicazione) ubicazione,
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.c_politica_pianificazione, D.c_politica_pianificazione) c_politica_pianificazione,
       COALESCE(AGM.gg_lead_time_sicurezza, D.gg_lead_time_sicurezza) gg_lead_time_sicurezza,
       COALESCE(AGM.c_magazzino_rifornimento, D.c_magazzino_rifornimento) c_magazzino_rifornimento,
       COALESCE(AGM.fg_calcolo_livello_riordino, D.fg_calcolo_livello_riordino) fg_calcolo_livello_riordino,
       COALESCE(AGM.gg_scorta_sicurezza, D.gg_scorta_sicurezza) gg_scorta_sicurezza,
       COALESCE(AGM.fg_calcolo_scorta_sicurezza, D.fg_calcolo_scorta_sicurezza) fg_calcolo_scorta_sicurezza,
       COALESCE(AGM.n_qta_minima_ordine, D.n_qta_minima_ordine) n_qta_minima_ordine,
       COALESCE(AGM.n_qta_massima_ordine, D.n_qta_massima_ordine) n_qta_massima_ordine,
       COALESCE(AGM.fg_politica_formazione_ordine, D.fg_politica_formazione_ordine) fg_politica_formazione_ordine,
       COALESCE(AGM.gg_orizzonte_pianificazione, D.gg_orizzonte_pianificazione) gg_orizzonte_pianificazione,
       COALESCE(AGM.gg_demand_time, D.gg_demand_time) gg_demand_time,
       COALESCE(AGM.gg_planning_time, D.gg_planning_time) gg_planning_time,
       COALESCE(AGM.fg_prelievo_logistica, D.fg_prelievo_logistica) fg_prelievo_logistica,
       COALESCE(AGM.gg_copertura, D.gg_copertura) gg_copertura,
       COALESCE(AGM.fg_allocabile, D.fg_allocabile) fg_allocabile,
       COALESCE(AGM.fg_calcolo_atp, D.fg_calcolo_atp) fg_calcolo_atp,
       COALESCE(AGM.fg_controllo_materiali, D.fg_controllo_materiali) fg_controllo_materiali,
       COALESCE(AGM.c_gruppo_acquisto, D.c_gruppo_acquisto) c_gruppo_acquisto,
       COALESCE(AGM.n_scorta_sicurezza, D.n_scorta_sicurezza) n_scorta_sicurezza,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gestione_anticipo, D.fg_tipo_gestione_anticipo) fg_tipo_gestione_anticipo,
       COALESCE(AGM.gg_anticipo, D.gg_anticipo) gg_anticipo,
       COALESCE(AGM.formula_gg_anticipo, D.formula_gg_anticipo) formula_gg_anticipo,
       COALESCE(AGM.fg_tipo_gestione_posticipo, D.fg_tipo_gestione_posticipo) fg_tipo_gestione_posticipo,
       COALESCE(AGM.gg_posticipo, D.gg_posticipo) gg_posticipo,
       COALESCE(AGM.formula_gg_posticipo, D.formula_gg_posticipo) formula_gg_posticipo,
       COALESCE(AGM.fg_tipo_gestione_sollecito, D.fg_tipo_gestione_sollecito) fg_tipo_gestione_sollecito,
       COALESCE(AGM.gg_sollecito, D.gg_sollecito) gg_sollecito,
       COALESCE(AGM.formula_sollecito, D.formula_sollecito) formula_sollecito,
       COALESCE(AGM.fg_gestione_previsioni, D.fg_gestione_previsioni) fg_gestione_previsioni,
       COALESCE(AGM.gg_orizzonte_previsioni, D.gg_orizzonte_previsioni) gg_orizzonte_previsioni,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.fg_creazione_mto_in_chiusura, D.fg_creazione_mto_in_chiusura) fg_creazione_mto_in_chiusura,
       COALESCE(AGM.gg_min_anticipo_per_messaggio, D.gg_min_anticipo_per_messaggio) gg_min_anticipo_per_messaggio,
       COALESCE(AGM.gg_min_posticipo_per_messaggio, D.gg_min_posticipo_per_messaggio) gg_min_posticipo_per_messaggio,
       COALESCE(AGM.fg_partecipa_popolarita, D.fg_partecipa_popolarita) fg_partecipa_popolarita,
----Il raggruppamento di pianificazione è solo nei gestionali per magazzino
       COALESCE(AGM.c_raggr_pianificazione, @elemento_netro) c_raggr_pianificazione,
       COALESCE(AGM.fg_slitta_consegne, D.fg_slitta_consegne) fg_slitta_consegne,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.fg_tipo_calcolo_atp, D.fg_tipo_calcolo_atp) fg_tipo_calcolo_atp,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.c_pianificatore, A.c_pianificatore) c_pianificatore,
       COALESCE(AGM.c_compratore, A.c_compratore) c_compratore,
       COALESCE(AGM.fg_matricola, D.fg_matricola) fg_matricola,
       COALESCE(AGM.c_regola_atp, D.c_regola_atp) c_regola_atp,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_gestito_da_logistica, D.fg_gestito_da_logistica) fg_gestito_da_logistica,
       COALESCE(AGM.c_ubicazione_predefinita_entrata, D.c_ubicazione_predefinita_entrata) c_ubicazione_predefinita_entrata,
       COALESCE(AGM.c_unita_carico_stoccaggio, D.c_unita_carico_stoccaggio) c_unita_carico_stoccaggio,
       COALESCE(AGM.fg_tipo_prelievo, D.fg_tipo_prelievo) fg_tipo_prelievo,
       COALESCE(AGM.fg_ordinamento_ubicazioni, D.fg_ordinamento_ubicazioni) fg_ordinamento_ubicazioni,       
       COALESCE(AGM.fg_coord_spaziale_x_rib_log, D.fg_coord_spaziale_x_rib_log) fg_coord_spaziale_x_rib_log,
       COALESCE(AGM.fg_coord_spaziale_y_rib_log, D.fg_coord_spaziale_y_rib_log) fg_coord_spaziale_y_rib_log,
       COALESCE(AGM.fg_coord_spaziale_z_rib_log, D.fg_coord_spaziale_z_rib_log) fg_coord_spaziale_z_rib_log,
       COALESCE(AGM.c_metodo_prelievo, D.c_metodo_prelievo) c_metodo_prelievo,
       COALESCE(AGM.fg_tipo_spunta, D.fg_tipo_spunta) fg_tipo_spunta,
       COALESCE(AGM.fg_controllo_abbinamento, D.fg_controllo_abbinamento) fg_controllo_abbinamento,
       COALESCE(AGM.fg_abbinabile, D.fg_abbinabile) fg_abbinabile,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_invio_fornitore, D.fg_invio_fornitore) fg_invio_fornitore,
       COALESCE(AGM.c_info_acquisti_1, D.c_info_acquisti_1) c_info_acquisti_1,
       COALESCE(AGM.c_info_acquisti_2, D.c_info_acquisti_2) c_info_acquisti_2,
       COALESCE(AGM.n_info_acquisti_3, D.n_info_acquisti_3) n_info_acquisti_3,     
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
       AST.c_scheda_secondaria,
       AGM.c_articolo esiste_art_magazzino, 
       TM.c_raggr_magazzino,
----Dati scheda tecnica
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       N.c_famiglia c_famiglia_scheda, N.c_modello c_modello_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec,
       AST.fg_ricalcola, AST.fg_rotazione_misure
FROM art_amministrativi B WITH (NOLOCK), art_spedizione C WITH (NOLOCK), art_generali A WITH (NOLOCK),
art_gestionali D WITH (NOLOCK), tab_magazzini TM WITH (NOLOCK), articolo_scheda_tecnica AST WITH (NOLOCK)
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = @c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = @c_magazzino
AND AGM.c_articolo = @c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria, 
schede_tecniche N WITH (NOLOCK), schede_tecniche M WITH (NOLOCK)
WHERE  N.c_scheda = @c_scheda
  AND A.c_articolo = @c_articolo
  AND B.c_articolo = @c_articolo
  AND C.c_articolo = @c_articolo
  AND B.n_id_interno = AST.n_id_amministrativi
  AND C.n_id_interno = AST.n_id_spedizione
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND TM.c_magazzino = @c_magazzino
  AND AST.c_magazzino_ast = @c_magazzino
  AND AST.c_articolo = @c_articolo
  AND AST.c_scheda = @c_scheda
  AND M.c_scheda = AST.c_scheda_secondaria
GO

if OBJECT_ID('s3_sp_leggi_dati_articolo') is NOT NULL 
DROP PROCEDURE s3_sp_leggi_dati_articolo
go

CREATE PROCEDURE dbo.s3_sp_leggi_dati_articolo
@c_articolo varchar(16),
@c_scheda varchar(8),
@elemento_netro varchar(8)
AS
SELECT
----Dati Generali
       A.c_griglia_varianti, A.c_categoria_preferenziale, A.immagine,
       A.ds_estesa, A.c_magazzino, A.fg_calcolo_prezzo_vendita,
       A.ds_aggiuntiva, A.fg_prodotto_finito, A.annullato, 
       A.fg_articolo_phantom,A.fg_articolo_alias, A.c_categoria_preferenziale_1,
       A.c_piano_codifica, A.fg_apertura_magazzino, A.radice, A.commento,
       A.fg_multilivello,A.fg_invisibile_multilivello,
       A.utente_modifica_annullato, A.dt_modifica_annullato, A.fg_elabora_costi,
----Dati amministrativi
       B.c_iva, B.c_um_fatturazione,B.c_conto_vendita, B.c_conto_vendita_estero,
       B.c_linea, B.fg_non_scontato, B.fg_esente_fattura,B.c_conto_vendita_extra_cee, B.n_id_interno n_id_amministrativi,
       B.c_um_fatturazione_acquisti,  B.fg_escludi_da_provvigioni, B.fg_per_nota_accredito,
----Dati spedizione
       C.fg_e_collo, C.c_um_peso, C.c_um_volume, C.c_um_dimensioni c_um_dimensioni_sp,
       C.c_sigla_dim1 SDim1Sp, C.c_sigla_dim2 SDim2Sp, C.c_sigla_dim3 SDim3Sp,
       C.c_tipo_collo, C.n_qta_per_collo, C.c_raggr_articolo,
       C.n_peso_netto, C.n_peso_lordo, C.n_volume, C.n_dim1 n_dim_1_spedizione,
       C.n_dim2 n_dim_2_spedizione, C.n_dim3 n_dim_3_spedizione,
       C.c_centro_montaggio, C.fg_esente_ddt, C.n_id_interno n_id_spedizione,
       C.fg_collo_a_magazzino,C.fg_collificazione_unitaria,C.c_categoria_spedizione,
----Dati gestionali
       D.c_um_tecnica, D.c_um_stoccaggio, D.c_um_dimensioni,
       D.c_sigla_dim1 SDim1Gs, D.c_sigla_dim2 SDim2Gs, D.c_sigla_dim3 SDim3Gs,
       D.fg_dim_obbligatoria1, D.fg_dim_obbligatoria2, D.fg_dim_obbligatoria3,
       D.n_dim1, D.n_dim2, D.n_dim3, 
	   COALESCE(AGM.c_centro_lavoro, D.c_centro_lavoro) c_centro_lavoro,
	   D.c_griglia_magazzino,
       D.fg_coord_spaziale_1, D.fg_coord_spaziale_2, D.fg_coord_spaziale_3,
       D.c_distinta_riferimento, D.c_scheda_distinta, D.c_raggr_art_per_of,
       D.n_dim1_min, D.n_dim2_min, D.n_dim3_min, D.n_passo_taglio,
       D.n_dim1_max, D.n_dim2_max, D.n_dim3_max,
       COALESCE(AGM.fg_coord_venatura_1,D.fg_coord_venatura_1) fg_coord_venatura_1, 
       COALESCE(AGM.fg_coord_venatura_2,D.fg_coord_venatura_2) fg_coord_venatura_2, 
       COALESCE(AGM.fg_coord_venatura_3,D.fg_coord_venatura_3) fg_coord_venatura_3,
       D.ds_aggiuntiva ds_aggiuntiva_gestionale, D.c_fattore_conversione, D.n_id_interno n_id_gestionali,
       D.fg_acquista, D.fg_raggr_import_grafica,
       D.fg_flagvisibile, D.fg_flaggrafica, D.fg_tipoarticologr, 
       D.fg_articoloamisura, D.fg_flag2, D.oggettitipoaltern, 
       D.c_cneutrodoppiolato, D.cod_alternativo, D.c_oggettotipo, 
       D.c_tipologia, D.c_strato, 
       D.fg_db_opzioni, D.fg_blatovista2, D.fg_grafismosupadre, 
       D.n_lunghezzadente, D.n_divisoreqta, D.c_morfologia, 
       D.n_c_lung, D.n_c_larg, D.n_c_prof, 
       D.n_corrx, D.n_corry, D.n_corrz, 
       D.n_snapcorrx, D.n_snapcorry, D.n_snapcorrz,
       D.fg_global_atp, D.fg_articolo_montato, D.fg_imposta_rif_riga,
       COALESCE(AGM.fg_primo_gestito_montaggio ,D.fg_primo_gestito_montaggio) fg_primo_gestito_montaggio, 
       COALESCE(AGM.fg_provenienza_preferenziale,D.fg_provenienza_preferenziale) fg_provenienza_preferenziale,
       COALESCE(AGM.c_fornitore_abituale,D.c_fornitore_abituale) c_fornitore_abituale,
       COALESCE(AGM.c_tipo_gestione,D.c_tipo_gestione) c_tipo_gestione,
       COALESCE(AGM.n_lotto_economico,D.n_lotto_economico) n_lotto_economico,
       COALESCE(AGM.n_qta_multiplo,D.n_qta_multiplo) n_qta_multiplo,
       COALESCE(AGM.n_livello_minimo_riordino,D.n_livello_minimo_riordino) n_livello_minimo_riordino,
       COALESCE(AGM.gg_lead_time,D.gg_lead_time) gg_lead_time,
       COALESCE(AGM.fg_significativo,D.fg_significativo) fg_significativo,
       COALESCE(AGM.fg_movimenta_magazzino,D.fg_movimenta_magazzino) fg_movimenta_magazzino, 
       COALESCE(AGM.gg_ciclo_inventario,D.gg_ciclo_inventario) gg_ciclo_inventario,
       COALESCE(AGM.gg_scorta_minima,D.gg_scorta_minima) gg_scorta_minima,
       COALESCE(AGM.gg_approvvigionamento,D.gg_approvigionamento) gg_approvigionamento,
       COALESCE(AGM.pc_sfrido,D.pc_sfrido) pc_sfrido,
       COALESCE(AGM.c_zona_magazzino,D.c_zona_magazzino) c_zona_magazzino,
       COALESCE(AGM.ubicazione,D.ubicazione) ubicazione,
       COALESCE(AGM.c_forma_periodo,D.c_forma_periodo) c_forma_periodo,
       COALESCE(AGM.c_politica_pianificazione, D.c_politica_pianificazione) c_politica_pianificazione,
       COALESCE(AGM.gg_lead_time_sicurezza, D.gg_lead_time_sicurezza) gg_lead_time_sicurezza,
       COALESCE(AGM.c_magazzino_rifornimento, D.c_magazzino_rifornimento) c_magazzino_rifornimento,
       COALESCE(AGM.fg_calcolo_livello_riordino, D.fg_calcolo_livello_riordino) fg_calcolo_livello_riordino,
       COALESCE(AGM.gg_scorta_sicurezza, D.gg_scorta_sicurezza) gg_scorta_sicurezza,
       COALESCE(AGM.fg_calcolo_scorta_sicurezza, D.fg_calcolo_scorta_sicurezza) fg_calcolo_scorta_sicurezza,
       COALESCE(AGM.n_qta_minima_ordine, D.n_qta_minima_ordine) n_qta_minima_ordine,
       COALESCE(AGM.n_qta_massima_ordine, D.n_qta_massima_ordine) n_qta_massima_ordine,
       COALESCE(AGM.fg_politica_formazione_ordine, D.fg_politica_formazione_ordine) fg_politica_formazione_ordine,
       COALESCE(AGM.gg_orizzonte_pianificazione, D.gg_orizzonte_pianificazione) gg_orizzonte_pianificazione,
       COALESCE(AGM.gg_demand_time, D.gg_demand_time) gg_demand_time,
       COALESCE(AGM.gg_planning_time, D.gg_planning_time) gg_planning_time,
       COALESCE(AGM.fg_prelievo_logistica, D.fg_prelievo_logistica) fg_prelievo_logistica,
       COALESCE(AGM.gg_copertura, D.gg_copertura) gg_copertura,
       COALESCE(AGM.fg_allocabile, D.fg_allocabile) fg_allocabile,
       COALESCE(AGM.fg_calcolo_atp, D.fg_calcolo_atp) fg_calcolo_atp,
       COALESCE(AGM.fg_controllo_materiali, D.fg_controllo_materiali) fg_controllo_materiali,
       COALESCE(AGM.c_gruppo_acquisto, D.c_gruppo_acquisto) c_gruppo_acquisto,
       COALESCE(AGM.n_scorta_sicurezza, D.n_scorta_sicurezza) n_scorta_sicurezza,
       COALESCE(AGM.gg_rilascio_bis, D.gg_rilascio_bis) gg_rilascio_bis,
       COALESCE(AGM.gg_rilascio_ter, D.gg_rilascio_ter) gg_rilascio_ter,
       COALESCE(AGM.fg_tipo_gestione_anticipo, D.fg_tipo_gestione_anticipo) fg_tipo_gestione_anticipo,
       COALESCE(AGM.gg_anticipo, D.gg_anticipo) gg_anticipo,
       COALESCE(AGM.formula_gg_anticipo, D.formula_gg_anticipo) formula_gg_anticipo,
       COALESCE(AGM.fg_tipo_gestione_posticipo, D.fg_tipo_gestione_posticipo) fg_tipo_gestione_posticipo,
       COALESCE(AGM.gg_posticipo, D.gg_posticipo) gg_posticipo,
       COALESCE(AGM.formula_gg_posticipo, D.formula_gg_posticipo) formula_gg_posticipo,
       COALESCE(AGM.fg_tipo_gestione_sollecito, D.fg_tipo_gestione_sollecito) fg_tipo_gestione_sollecito,
       COALESCE(AGM.gg_sollecito, D.gg_sollecito) gg_sollecito,
       COALESCE(AGM.formula_sollecito, D.formula_sollecito) formula_sollecito,
       COALESCE(AGM.fg_gestione_previsioni, D.fg_gestione_previsioni) fg_gestione_previsioni,
       COALESCE(AGM.gg_orizzonte_previsioni, D.gg_orizzonte_previsioni) gg_orizzonte_previsioni,
       COALESCE(AGM.gg_rilascio, D.gg_rilascio) gg_rilascio,
       COALESCE(AGM.fg_tipo_gg_rilascio, D.fg_tipo_gg_rilascio) fg_tipo_gg_rilascio,
       COALESCE(AGM.fg_cadenza_gg_rilascio, D.fg_cadenza_gg_rilascio) fg_cadenza_gg_rilascio,
       COALESCE(AGM.fg_creazione_mto_in_chiusura, D.fg_creazione_mto_in_chiusura) fg_creazione_mto_in_chiusura,
       COALESCE(AGM.gg_min_anticipo_per_messaggio, D.gg_min_anticipo_per_messaggio) gg_min_anticipo_per_messaggio,
       COALESCE(AGM.gg_min_posticipo_per_messaggio, D.gg_min_posticipo_per_messaggio) gg_min_posticipo_per_messaggio,
       COALESCE(AGM.fg_partecipa_popolarita, D.fg_partecipa_popolarita) fg_partecipa_popolarita,
----Il raggruppamento di pianificazione è solo nei gestionali per magazzino
       COALESCE(AGM.c_raggr_pianificazione, @elemento_netro) c_raggr_pianificazione,
       COALESCE(AGM.fg_slitta_consegne, D.fg_slitta_consegne) fg_slitta_consegne,
       COALESCE(AGM.c_regola_app, D.c_regola_app) c_regola_app,
       COALESCE(AGM.fg_tipo_calcolo_atp, D.fg_tipo_calcolo_atp) fg_tipo_calcolo_atp,
       COALESCE(AGM.n_gg_lead_time_unitari, D.n_gg_lead_time_unitari) n_gg_lead_time_unitari,
       COALESCE(AGM.c_pianificatore, A.c_pianificatore) c_pianificatore,
       COALESCE(AGM.c_compratore, A.c_compratore) c_compratore,
       COALESCE(AGM.fg_matricola, D.fg_matricola) fg_matricola,
       COALESCE(AGM.c_regola_atp, D.c_regola_atp) c_regola_atp,
       COALESCE(AGM.c_aggrega_magazzino, D.c_aggrega_magazzino) c_aggrega_magazzino,
       COALESCE(AGM.fg_gestito_da_logistica, D.fg_gestito_da_logistica) fg_gestito_da_logistica,
       COALESCE(AGM.c_ubicazione_predefinita_entrata, D.c_ubicazione_predefinita_entrata) c_ubicazione_predefinita_entrata,
       COALESCE(AGM.c_unita_carico_stoccaggio, D.c_unita_carico_stoccaggio) c_unita_carico_stoccaggio,
       COALESCE(AGM.fg_tipo_prelievo, D.fg_tipo_prelievo) fg_tipo_prelievo,
       COALESCE(AGM.fg_ordinamento_ubicazioni, D.fg_ordinamento_ubicazioni) fg_ordinamento_ubicazioni,       
       COALESCE(AGM.fg_coord_spaziale_x_rib_log, D.fg_coord_spaziale_x_rib_log) fg_coord_spaziale_x_rib_log,
       COALESCE(AGM.fg_coord_spaziale_y_rib_log, D.fg_coord_spaziale_y_rib_log) fg_coord_spaziale_y_rib_log,
       COALESCE(AGM.fg_coord_spaziale_z_rib_log, D.fg_coord_spaziale_z_rib_log) fg_coord_spaziale_z_rib_log,
       COALESCE(AGM.c_metodo_prelievo, D.c_metodo_prelievo) c_metodo_prelievo,
       COALESCE(AGM.fg_controllo_abbinamento, D.fg_controllo_abbinamento) fg_controllo_abbinamento,
       COALESCE(AGM.fg_usa_giac_logistica, D.fg_usa_giac_logistica) fg_usa_giac_logistica,
       COALESCE(AGM.fg_abbinabile, D.fg_abbinabile) fg_abbinabile,
       COALESCE(AGM.fg_invio_fornitore, D.fg_invio_fornitore) fg_invio_fornitore,
       COALESCE(AGM.c_info_acquisti_1, D.c_info_acquisti_1) c_info_acquisti_1,
       COALESCE(AGM.c_info_acquisti_2, D.c_info_acquisti_2) c_info_acquisti_2,
       COALESCE(AGM.n_info_acquisti_3, D.n_info_acquisti_3) n_info_acquisti_3,     
       ACM.c_codice_magazzino, ACM.ds_estesa ds_estesa_art_mag,
       ACM.fg_convalidato,
       AST.c_scheda_secondaria,
       AGM.c_articolo esiste_art_magazzino, 
       TM.c_raggr_magazzino,
----Dati scheda tecnica
       N.n_dim_1 n_dim1_scheda, N.n_dim_2 n_dim2_scheda, N.n_dim_3 n_dim3_scheda,
       N.c_famiglia c_famiglia_scheda, N.c_modello c_modello_scheda,
       M.n_dim_1 n_dim1_scheda_sec, M.n_dim_2 n_dim2_scheda_sec, M.n_dim_3 n_dim3_scheda_sec,
       M.c_famiglia c_famiglia_scheda_sec, M.c_modello c_modello_scheda_sec, D.c_raggr_art_tempo,
       AST.fg_ricalcola, AST.fg_rotazione_misure
FROM art_amministrativi B WITH (NOLOCK), art_spedizione C WITH (NOLOCK),
art_generali A WITH (NOLOCK), art_gestionali D WITH (NOLOCK),
tab_magazzini TM WITH (NOLOCK), articolo_scheda_tecnica AST WITH (NOLOCK)
LEFT JOIN art_codici_magazzino_scheda ACM WITH (NOLOCK)
ON ACM.c_articolo = AST.c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_gestionali_magazzino AGM WITH (NOLOCK)
ON AGM.c_magazzino = AST.c_magazzino_ast
AND AGM.c_articolo = AST.c_articolo
AND AGM.c_scheda = AST.c_scheda_secondaria, 
schede_tecniche N WITH (NOLOCK), schede_tecniche M WITH (NOLOCK)
WHERE  N.c_scheda = @c_scheda
  AND A.c_articolo = @c_articolo
  AND B.c_articolo = @c_articolo
  AND C.c_articolo = @c_articolo
  AND B.n_id_interno = AST.n_id_amministrativi
  AND C.n_id_interno = AST.n_id_spedizione
  AND D.n_id_interno = AST.n_id_gestionali
  AND D.c_articolo = @c_articolo
  AND A.c_magazzino = TM.c_magazzino
  AND AST.c_magazzino_ast = A.c_magazzino
  AND AST.c_articolo = A.c_articolo
  AND AST.c_scheda = @c_scheda
  AND M.c_scheda = AST.c_scheda_secondaria
GO



IF EXISTS (SELECT *
           FROM sysobjects SO
           WHERE SO.name='s3_sp_leggi_vestizione_new'
           AND type = 'P')
BEGIN
  DROP PROCEDURE dbo.s3_sp_leggi_vestizione_new
END
GO


CREATE PROCEDURE [dbo].[s3_sp_leggi_vestizione_new]
@c_famiglia varchar(3),
@c_modello varchar(6),
@c_griglia varchar(6)
AS
SELECT B.n_ordinamento, GVC.n_ordinamento_categoria, A.n_ordinamento_valore, A.c_categoria,
A.c_gruppo_categoria, B.ds_categoria,
B.sg_dim_riduzione, B.sg_dim_riduzione1 ,B.sg_dim_riduzione2,B.fg_accetta_categorie_doppie,
B.fg_coordinata ,B.fg_coordinata1 ,B.fg_coordinata2,
A.c_valore c_valore_significativo,
A.c_valore c_valore_non_significativo,
C.ds_valore , A.fg_standard fg_opzione_standard, GVC.fg_non_obbligatorio,
C.fg_significativo, @c_griglia c_griglia_varianti, C.n_R, C.n_G, C.n_B,
B.fg_categoria_a_catalogo, C.fg_a_catalogo,
U.c_fornitore, U.c_valore_3, U.c_valore_2, U.c_valore_1, U.c_articolo_produttore,
U.ds_articolo_produttore_1, U.ds_articolo_produttore_2,
U.c_valore_4,  U.c_valore_5,  U.c_valore_6, U.c_valore_7, U.c_valore_8,U.c_valore_9,
U.c_articolo_commerciale, U.ds_articolo_commerciale_1, U.ds_articolo_commerciale_2,
A.n_ordinamento_valore n_ordinamento_sns,
B.n_valore_minimo, B.n_valore_massimo, B.formato_valore, B.formato_ds_valore
, G.fg_tipo_gruppo, C.texture, A.dt_entrata_vigore_da, A.dt_entrata_vigore_a,
NULL dt_da_entrata_vigore, NULL dt_a_entrata_vigore, 
COALESCE(C.fg_stato_variante, A.fg_stato_variante) AS fg_stato_variante,
B.fg_copia_valori_da_gruppi, B.fg_copia_valori_da_gruppi_all,
B.fg_ordina_valori_per_stato_variante, B.fg_raggruppa_valori_per_non_significativo,
GVC.fg_almeno_un_valore, C.c_valore_alt, C.dt_a_partire_da_sv, G.fg_ditta_obbligatoria
FROM griglie_varianti A
INNER JOIN griglie_varianti_categoria GVC
ON GVC.c_famiglia = A.c_famiglia
AND GVC.c_modello = A.c_modello
AND GVC.c_griglia_varianti = A.c_griglia_varianti
AND GVC.c_categoria = A.c_categoria
INNER JOIN categorie B WITH (NOLOCK)
ON B.c_categoria = GVC.c_categoria
INNER JOIN tab_gruppi_categorie G WITH (NOLOCK)
ON G.c_gruppo_categoria = A.c_gruppo_categoria
INNER JOIN valori C WITH (NOLOCK) 
ON C.c_gruppo_categoria = A.c_gruppo_categoria
AND C.c_valore = A.c_valore
LEFT JOIN valori_dati_ulteriori U WITH (NOLOCK)
ON U.c_valore = C.c_valore
AND U.c_gruppo_categoria = C.c_gruppo_categoria
WHERE A.c_famiglia = @c_famiglia
AND A.c_modello = @c_modello
AND A.c_griglia_varianti = @c_griglia
AND A.c_griglia_varianti NOT IN ('*')
AND (A.c_valore NOT IN ('*') OR (G.fg_tipo_gruppo <> 0))
AND A.c_categoria NOT IN ('*')
UNION
SELECT B.n_ordinamento, GVC.n_ordinamento_categoria, A.n_ordinamento_valore, A.c_categoria,
A.c_gruppo_categoria, B.ds_categoria,
B.sg_dim_riduzione, B.sg_dim_riduzione1 ,B.sg_dim_riduzione2,B.fg_accetta_categorie_doppie,
B.fg_coordinata ,B.fg_coordinata1 ,B.fg_coordinata2, 
C.c_valore c_valore_significativo,
A.c_valore c_valore_non_significativo,
C.ds_valore , D.fg_standard fg_opzione_standard, GVC.fg_non_obbligatorio,
C.fg_significativo, @c_griglia c_griglia_varianti, C.n_R, C.n_G, C.n_B, B.fg_categoria_a_catalogo, C.fg_a_catalogo,
U.c_fornitore, U.c_valore_3, U.c_valore_2, U.c_valore_1, U.c_articolo_produttore,
U.ds_articolo_produttore_1, U.ds_articolo_produttore_2,
U.c_valore_4,  U.c_valore_5,  U.c_valore_6, U.c_valore_7, U.c_valore_8,U.c_valore_9,
U.c_articolo_commerciale, U.ds_articolo_commerciale_1, U.ds_articolo_commerciale_2,
D.n_ordinamento_valore n_ordinamento_sns,
B.n_valore_minimo, B.n_valore_massimo, B.formato_valore, B.formato_ds_valore
, G.fg_tipo_gruppo, C.texture, A.dt_entrata_vigore_da, A.dt_entrata_vigore_a,
D.dt_da_entrata_vigore, D.dt_a_entrata_vigore, 
CASE WHEN NOT C.fg_stato_variante IS NULL THEN C.fg_stato_variante
WHEN D.fg_stato_variante = 0 THEN A.fg_stato_variante ELSE D.fg_stato_variante END fg_stato_variante,
B.fg_copia_valori_da_gruppi, B.fg_copia_valori_da_gruppi_all, B.fg_ordina_valori_per_stato_variante, B.fg_raggruppa_valori_per_non_significativo,
GVC.fg_almeno_un_valore, C.c_valore_alt, C.dt_a_partire_da_sv, G.fg_ditta_obbligatoria
FROM griglie_varianti A
INNER JOIN griglie_varianti_categoria GVC
ON GVC.c_famiglia = A.c_famiglia
AND GVC.c_modello = A.c_modello
AND GVC.c_griglia_varianti = A.c_griglia_varianti
AND GVC.c_categoria = A.c_categoria
INNER JOIN categorie B WITH (NOLOCK)
ON B.c_categoria = GVC.c_categoria
INNER JOIN tab_gruppi_categorie G WITH (NOLOCK)
ON G.c_gruppo_categoria = A.c_gruppo_categoria
INNER JOIN varianti_generali D WITH (NOLOCK)
ON D.c_elenco_varianti = A.c_elenco_varianti
INNER JOIN valori C WITH (NOLOCK)
ON C.c_gruppo_categoria = D.c_gruppo_categoria
AND C.c_valore = D.c_valore
LEFT JOIN valori_dati_ulteriori U WITH (NOLOCK)
ON U.c_valore = C.c_valore
AND U.c_gruppo_categoria = C.c_gruppo_categoria
INNER JOIN valori F WITH (NOLOCK)
ON F.c_gruppo_categoria = A.c_gruppo_categoria
AND F.c_valore = A.c_valore
AND F.fg_significativo = 0
WHERE A.c_famiglia = @c_famiglia
AND A.c_modello = @c_modello
AND A.c_griglia_varianti = @c_griglia
AND A.c_griglia_varianti NOT IN ('*')
AND A.c_valore NOT IN ('*')
AND D.c_valore NOT IN ('*')
AND A.c_categoria NOT IN ('*')
ORDER BY n_ordinamento_categoria, A.c_categoria, n_ordinamento_valore, n_ordinamento_sns, 
c_valore_non_significativo, c_valore_significativo
OPTION (KEEP PLAN)
GO


update nomi set indirizzo2 = '' where indirizzo2 <>''
GO





IF EXISTS (SELECT *
           FROM sysobjects SO
           WHERE SO.name='s3_sp_leggi_scheda_con_var_est'
           AND type = 'P')
  DROP PROCEDURE dbo.s3_sp_leggi_scheda_con_var_est
GO

CREATE PROCEDURE dbo.s3_sp_leggi_scheda_con_var_est
@c_articolo DCodArticolo,
@c_scheda DCodSchedaTecnica,
@c_neutra varchar(3)
AS
SELECT A.c_famiglia, A.c_modello, A.n_dim_1, A.n_dim_2, A.n_dim_3,
B.c_categoria, B.c_valore, B.c_gruppo_categoria, 
COALESCE((SELECT MIN(GV.c_valore)
	FROM griglie_varianti GV WITH (NOLOCK), varianti_generali C WITH (NOLOCK)
	WHERE GV.c_griglia_varianti = AG.c_griglia_varianti
	AND GV.c_famiglia = A.c_famiglia 
	AND GV.c_modello = A.c_modello 
	AND GV.c_categoria = B.c_categoria 
	AND GV.c_elenco_varianti <> 0
	AND C.c_elenco_varianti = GV.c_elenco_varianti
	AND C.c_valore = B.c_valore), B.c_valore) c_valore_non_significativo,
VDU.c_valore_1, VDU.c_valore_2, VDU.c_valore_3, VDU.c_valore_4,
VDU.c_valore_5, VDU.c_valore_6, VDU.c_valore_7, VDU.c_valore_8,
VDU.c_valore_9, V.n_valore, 
CONVERT(VARCHAR(8000), (SELECT GV.c_valore + space(10-len(GV.c_valore))
	FROM griglie_varianti GV WITH (NOLOCK), varianti_generali C WITH (NOLOCK)
	WHERE GV.c_griglia_varianti = AG.c_griglia_varianti
	AND GV.c_famiglia = A.c_famiglia 
	AND GV.c_modello = A.c_modello 
	AND GV.c_categoria = B.c_categoria 
	AND GV.c_elenco_varianti <> 0
	AND C.c_elenco_varianti = GV.c_elenco_varianti
	AND C.c_valore = B.c_valore
FOR XML PATH (''))) elenco_valore_ns
FROM art_generali AG WITH (NOLOCK), schede_tecniche A WITH (NOLOCK)
LEFT JOIN schede_tecniche_categorie B WITH (NOLOCK)
ON A.c_scheda = B.c_scheda 
LEFT JOIN valori V
on B.c_gruppo_categoria = V.c_gruppo_categoria
and B.c_valore = V.c_valore
LEFT JOIN valori_dati_ulteriori VDU
ON VDU.c_gruppo_categoria = B.c_gruppo_categoria
AND VDU.c_valore = B.c_valore
WHERE A.c_scheda = @c_scheda
  AND AG.c_articolo = @c_articolo
GO




IF NOT OBJECT_ID('s3_sp_leggi_regole_vestizione_contentitore') IS NULL 
BEGIN
  DROP PROCEDURE [dbo].s3_sp_leggi_regole_vestizione_contentitore
END
GO

CREATE PROCEDURE [dbo].[s3_sp_leggi_regole_vestizione_contentitore]  
@c_famiglia varchar(3),  
@c_modello varchar(6),  
@c_griglia varchar(6),  
@c_listino varchar(3),  
@c_articolo varchar(16),  
@c_articolo_alias varchar(16),  
@c_neutra varchar(1),  
@fg_tipo_reperimento int = 0,  
@c_canale varchar(10) = '*',  
@fg_proprieta_contesto int = 0,  
@gruppo_vestizione ContenitoreTableType READONLY,  
@articolo_contenitore ContenitoreTableType READONLY,  
@famiglia_contenitore ContenitoreTableType READONLY,  
@modello_contenitore ContenitoreTableType READONLY,  
@griglia_contenitore ContenitoreTableType READONLY,
@gruppo_contenitore ContenitoreTableType READONLY,
@categorie ContenitoreTableType READONLY,
@gruppi_categorie ContenitoreTableType READONLY
AS  
SELECT A.n_id, A.fg_not, A.c_articolo, B.c_categoria, B.c_gruppo_categoria, B.c_valore,  
B.c_valore_1, B.c_valore_2, B.c_valore_3, B.c_valore_4, B.c_valore_5, B.c_valore_6, B.c_valore_7,  
B.fg_su_stato_variante, B.fg_stato_variante, B.fg_su_inclus_esclus, B.fg_inclus_esclus,  
B.fg_su_opzione_standard, B.fg_opzione_standard, B.fg_su_fuori_linea_commerciale,  
B.fg_fuori_linea_commerciale, B.dt_fuori_linea, B.dt_in_linea, B.fg_su_ord_valore, B.n_ord_valore,  
B.fg_su_ord_categoria, B.n_ord_categoria, B.fg_su_non_obbligatorio, B.fg_non_obbligatorio,  
B.dt_inizio_validita, B.dt_fine_validita, A.c_gruppo_vestizione,  
B.c_valore_8, B.c_valore_9, A.fg_proprieta_contesto,  
A.c_famiglia_contenitore, A.c_modello_contenitore,   
A.c_griglia_varianti_contenitore, A.c_articolo_contenitore, A.c_gruppo_vestizione_contenitore,  
B.c_categoria_contenitore, B.fg_su_altri_valori, B.fg_elenco_valori_incluso, B.c_tipo_regola,  
A.fg_articolo, A.fg_articolo_contenitore, A.fg_gruppo, A.fg_gruppo_contenitore,  
A.elenco_valori, C.n_vars
FROM griglie_varianti_regola A WITH (NOLOCK)--, INDEX = i_griglie_varianti_regola_new_1)  
INNER JOIN griglie_varianti_regola_testa B WITH (NOLOCK)  
ON B.n_id = A.n_id
LEFT JOIN valori V WITH (NOLOCK) 
ON V.c_gruppo_categoria = A.c_gruppo_categoria_regola
AND V.c_valore = A.c_valore_regola
OUTER APPLY (SELECT COUNT(*) AS n_vars
FROM griglie_varianti_regola_riga C WITH (NOLOCK)  
WHERE C.n_id = A.n_id) AS C
WHERE A.c_griglia_varianti IN (@c_neutra, @c_griglia)  
AND A.c_famiglia IN (@c_neutra, @c_famiglia)  
AND A.c_modello IN (@c_neutra, @c_modello)  
AND A.c_canale IN (@c_neutra, @c_canale)  
AND A.c_listino IN (@c_neutra, @c_listino)
AND A.c_categoria_regola IN (SELECT contenitore FROM @categorie)
AND A.c_gruppo_categoria_regola IN (SELECT contenitore FROM @gruppi_categorie)
AND (
  (@fg_tipo_reperimento = 0 AND
   (
     ((A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias)
       AND A.c_gruppo_vestizione IN (SELECT contenitore FROM @gruppo_vestizione)  
       AND A.c_articolo_contenitore IN (SELECT contenitore FROM @articolo_contenitore)
       AND A.c_famiglia_contenitore IN (SELECT contenitore FROM @famiglia_contenitore)
       AND A.c_modello_contenitore IN (SELECT contenitore FROM @modello_contenitore)
       AND A.c_griglia_varianti_contenitore IN (SELECT contenitore FROM @griglia_contenitore)
       AND A.c_gruppo_vestizione_contenitore IN (SELECT contenitore FROM @gruppo_contenitore)
      )
      OR (A.c_articolo <> @c_neutra AND A.fg_articolo IN (1,2))
      OR (A.c_articolo_contenitore <> @c_neutra AND A.fg_articolo_contenitore IN (1,2))
      OR (A.c_gruppo_vestizione <> @c_neutra AND A.fg_gruppo IN (1,2))
      OR (A.c_gruppo_vestizione_contenitore <> @c_neutra AND A.fg_gruppo_contenitore IN (1,2))
     )
    ) 
   )
  OR 
  (@fg_tipo_reperimento = 1 
   AND A.fg_su_non_obbligatorio_testa = 1 
   AND A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias)
  )
)
ORDER BY A.fg_not DESC, A.n_ordinamento DESC,  
CASE WHEN A.elenco_valori IS NOT NULL  
THEN 2  
WHEN A.c_valore_regola = @c_neutra THEN 0  
WHEN V.fg_significativo = 0 THEN 1 ELSE 3 END DESC,
A.c_famiglia DESC, A.c_modello DESC, A.c_griglia_varianti DESC, A.c_articolo DESC, A.c_listino DESC, A.c_gruppo_vestizione DESC,
A.c_famiglia_contenitore DESC, A.c_modello_contenitore DESC, A.c_griglia_varianti_contenitore DESC, A.c_articolo_contenitore DESC,
A.c_gruppo_vestizione_contenitore DESC, A.n_id
OPTION (KEEP PLAN)
GO




IF NOT OBJECT_ID('s3_sp_leggi_regole_vestizione_contentitore_riga') IS NULL 
BEGIN
  DROP PROCEDURE [dbo].s3_sp_leggi_regole_vestizione_contentitore_riga
END
GO

CREATE PROCEDURE dbo.s3_sp_leggi_regole_vestizione_contentitore_riga @n_id RegolaRigaTableType READONLY
AS
SELECT C.n_id, C.fg_operatore, C.n_gruppo, C.n_gruppo_padre, C.c_categoria,  
C.c_gruppo_categoria, C.c_valore, C.c_valore_1, C.c_valore_2, C.c_valore_3,
C.c_valore_4 , C.c_valore_5, C.c_valore_6, C.c_valore_7, C.c_valore_8, C.c_valore_9,
C.fg_operatore_not, C.fg_tipo_dimensione, C.n_dim, C.fg_tipo_operatore, 
C.fg_proprieta_regola, C.c_variabile, C.n_valore
FROM griglie_varianti_regola_riga C WITH (NOLOCK)  
WHERE C.n_id IN (SELECT X.n_id FROM @n_id X)
ORDER BY C.n_id, C.n_gruppo
GO


IF NOT OBJECT_ID('s3_sp_leggi_regole_vestizione_new') IS NULL 
BEGIN
  DROP PROCEDURE [dbo].s3_sp_leggi_regole_vestizione_new
END
GO

CREATE PROCEDURE [dbo].[s3_sp_leggi_regole_vestizione_new]  
@c_famiglia varchar(3),  
@c_modello varchar(6),  
@c_griglia varchar(6),  
@c_listino varchar(3),  
@c_articolo varchar(16),  
@c_articolo_alias varchar(16),  
@c_neutra varchar(1),  
@fg_tipo_reperimento int = 0,  
@c_canale varchar(10) = '*'  
AS  
SELECT A.n_id, A.fg_not, A.c_articolo, B.c_categoria, B.c_gruppo_categoria, B.c_valore,  
B.c_valore_1, B.c_valore_2, B.c_valore_3, B.c_valore_4, B.c_valore_5, B.c_valore_6, B.c_valore_7,  
B.fg_su_stato_variante, B.fg_stato_variante, B.fg_su_inclus_esclus, B.fg_inclus_esclus,  
B.fg_su_opzione_standard, B.fg_opzione_standard, B.fg_su_fuori_linea_commerciale,  
B.fg_fuori_linea_commerciale, B.dt_fuori_linea, B.dt_in_linea, B.fg_su_ord_valore, B.n_ord_valore,  
B.fg_su_ord_categoria, B.n_ord_categoria, B.fg_su_non_obbligatorio, B.fg_non_obbligatorio,  
B.dt_inizio_validita, B.dt_fine_validita,A.c_gruppo_vestizione,  
B.c_valore_8, B.c_valore_9, A.fg_proprieta_contesto,  
A.c_famiglia_contenitore, A.c_modello_contenitore,   
A.c_griglia_varianti_contenitore, A.c_articolo_contenitore, A.c_gruppo_vestizione_contenitore,  
B.c_categoria_contenitore, B.fg_su_altri_valori, B.fg_elenco_valori_incluso, B.c_tipo_regola,  
A.fg_articolo, A.fg_articolo_contenitore, A.fg_gruppo, A.fg_gruppo_contenitore,  
A.elenco_valori, C.n_vars
FROM griglie_varianti_regola A WITH (NOLOCK)  
INNER JOIN griglie_varianti_regola_testa B WITH (NOLOCK)  
ON B.n_id = A.n_id  
OUTER APPLY (SELECT COUNT(*) AS n_vars
FROM griglie_varianti_regola_riga C WITH (NOLOCK)  
WHERE C.n_id = A.n_id) AS C
LEFT JOIN valori V WITH (NOLOCK) 
ON V.c_gruppo_categoria = B.c_gruppo_categoria  
AND V.c_valore = B.c_valore  
WHERE A.c_famiglia IN (@c_neutra, @c_famiglia)  
AND A.c_modello IN (@c_neutra, @c_modello)  
AND A.c_griglia_varianti IN (@c_neutra, @c_griglia)  
AND A.c_canale IN (@c_neutra, @c_canale)  
AND A.c_listino IN (@c_neutra, @c_listino)  
AND EXISTS (SELECT *  
FROM griglie_varianti_categoria Z WITH (NOLOCK), categorie Y WITH (NOLOCK)  
WHERE Z.c_famiglia = @c_famiglia  
AND Z.c_modello = @c_modello  
AND Z.c_griglia_varianti = @c_griglia  
AND Y.c_categoria = Z.c_categoria  
AND Y.c_gruppo_categoria = B.c_gruppo_categoria)  
AND ((@fg_tipo_reperimento = 0 AND ((B.fg_su_inclus_esclus = 1) OR (B.fg_su_inclus_esclus = 0 AND A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias))))  
OR (@fg_tipo_reperimento = 1 AND B.fg_su_non_obbligatorio = 1 AND A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias)))  
ORDER BY A.fg_not DESC, A.n_ordinamento DESC,  
CASE WHEN A.elenco_valori IS NOT NULL  
THEN 2  
WHEN B.c_valore = @c_neutra THEN 0  
WHEN V.fg_significativo = 0 THEN 1 ELSE 3 END DESC,  
A.c_famiglia DESC, A.c_modello DESC, A.c_griglia_varianti DESC, A.c_articolo DESC, A.c_listino DESC, A.c_gruppo_vestizione DESC,   
A.c_famiglia_contenitore DESC, A.c_modello_contenitore DESC, A.c_griglia_varianti_contenitore DESC, A.c_articolo_contenitore DESC, A.c_gruppo_vestizione_contenitore DESC,   
A.n_id
GO








if exists(select * from sysindexes where name = '_dta_index_art_generali_5_435089632__K5_K8_1')
  DROP INDEX art_generali._dta_index_art_generali_5_435089632__K5_K8_1
GO

if exists(select * from sysindexes where name = '_dta_index_art_generali_5_435089632__K8_K5_1')
  DROP INDEX art_generali._dta_index_art_generali_5_435089632__K8_K5_1
GO

if exists(select * from sysindexes where name = 'i_art_generali_ricArt_01')
  DROP INDEX art_generali.i_art_generali_ricArt_01
GO

if exists(select * from sysindexes where name = 'i_art_generali_ricArt_02')
  DROP INDEX art_generali.i_art_generali_ricArt_02
GO


ALTER TABLE art_generali ALTER COLUMN ds_estesa nvarchar(100) NOT NULL
go

ALTER TABLE art_generali ALTER COLUMN ds_aggiuntiva nvarchar(100) NOT NULL
go

ALTER TABLE art_generali ALTER COLUMN ds_ridotta nvarchar(60) NOT NULL
go

ALTER TABLE des_lingua_art_generali ALTER COLUMN ds_aggiuntiva_lingua nvarchar(100) NOT  NULL
go

ALTER TABLE des_lingua_art_generali ALTER COLUMN ds_ridotta_lingua nvarchar(60) NOT  NULL
go

ALTER TABLE des_lingua_art_generali ALTER COLUMN ds_aggiuntiva_lingua_non_conf nvarchar(100) NOT NULL
go

ALTER TABLE des_lingua_art_generali ALTER COLUMN ds_ridotta_lingua_non_conf nvarchar(60) NOT NULL
go




IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_conferma_mappa_manuale'
                 AND SO.name='tab_percorsi')
BEGIN
	ALTER TABLE tab_percorsi ADD fg_conferma_mappa_manuale smallint NOT NULL DEFAULT (1)
END
go


IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_doc_carico_automatica'
                 AND SO.name='tab_percorsi')
BEGIN
	ALTER TABLE tab_percorsi ADD fg_doc_carico_automatica smallint NOT NULL DEFAULT (0)
END
go




IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='c_doc_carico'
                 AND SO.name='tab_percorsi')
BEGIN
	ALTER TABLE tab_percorsi ADD c_doc_carico varchar(10) NULL 

END
go


IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'c_marchio_dest'
      AND A.id=C.id
      AND C.type='U'
      AND C.name='nomi_destinazioni_diverse')=0
BEGIN
	ALTER TABLE nomi_destinazioni_diverse ADD
		c_marchio_dest varchar(10) NOT NULL DEFAULT ('*')

END
GO



IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'n_ordinamento_riga_collo'
      AND A.id=C.id
      AND C.type='U'
      AND C.name='art_spedizione')=0
BEGIN
  ALTER TABLE art_spedizione add n_ordinamento_riga_collo DIntDefZero NOT NULL DEFAULT 0
END
go

IF NOT EXISTS (SELECT SC.*
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_travasa_magazzino_in_lotto'
                 AND SO.name='tab_magazzini')
BEGIN
  ALTER TABLE tab_magazzini
       ADD fg_travasa_magazzino_in_lotto DIntDefZero NOT NULL DEFAULT(0)
END
GO


if OBJECT_ID('LAG_sp_dati_nodo_distinta') is NOT NULL 
DROP PROCEDURE LAG_sp_dati_nodo_distinta
go

CREATE PROCEDURE [dbo].[LAG_sp_dati_nodo_distinta]
@c_magazzino DCodMagazzino,
@c_articolo DCodArticolo,
@c_scheda DCodSchedaTecnica
AS
SELECT 
CASE WHEN (exists (select *
  from art_gestionali_misure agm
  WHERE agm.n_id_interno = a.n_id_gestionali
  and ABS(agm.n_dim1 - dbo.tesy_fn_get_misura_123_rotaz(a.fg_rotazione_misure, ag.fg_coord_spaziale_1, ag.n_dim1, ST.n_dim_1 , ST.n_dim_2, ST.n_dim_3)) <= 0.0001
  and ABS(agm.n_dim2 - dbo.tesy_fn_get_misura_123_rotaz(a.fg_rotazione_misure, ag.fg_coord_spaziale_2, ag.n_dim2, ST.n_dim_1 , ST.n_dim_2, ST.n_dim_3)) <= 0.0001
  and ABS(agm.n_dim3 - dbo.tesy_fn_get_misura_123_rotaz(a.fg_rotazione_misure, ag.fg_coord_spaziale_3, ag.n_dim3, ST.n_dim_1 , ST.n_dim_2, ST.n_dim_3)) <= 0.0001
  and agm.fg_stato_terna in (1,2))) then 1 else 0 END esiste_terna_misure,
  COALESCE(AGMP.indice_rotazione, agp.indice_rotazione, '*') indice_rotazione,
  COALESCE(AGM.fg_provenienza_preferenziale, ag.fg_provenienza_preferenziale) fg_provenienza_preferenziale,  
  COALESCE(AGM.c_tipo_gestione, ag.c_tipo_gestione) c_tipo_gestione, COALESCE(A1.modello, '*') c_modello, AGE.c_settore_ricerca,
  COALESCE(AGM.fg_movimenta_magazzino, ag.fg_movimenta_magazzino) fg_movimenta_magazzino
FROM articolo_scheda_tecnica a
INNER JOIN art_generali AGE
ON AGE.c_articolo = a.c_articolo
INNER JOIN art_gestionali ag
on ag.n_id_interno = a.n_id_gestionali
INNER JOIN schede_tecniche ST
ON ST.c_scheda = a.c_scheda
LEFT JOIN LAGcmp_art_gestionali agp
ON agp.c_articolo = a.c_articolo
AND agp.n_id_interno = a.n_id_gestionali
LEFT JOIN LAGcmp_art_gestionali_magazzino AGMP
ON AGMP.c_magazzino = a.c_magazzino_ast
AND AGMP.c_articolo = a.c_articolo 
AND AGMP.c_scheda = a.c_scheda_secondaria
LEFT JOIN LAGcmp_art_generali A1
ON a.c_articolo = A1.c_articolo 
LEFT JOIN art_gestionali_magazzino AGM  
ON AGM.c_magazzino = a.c_magazzino_ast  
AND AGM.c_articolo = a.c_articolo  
AND AGM.c_scheda = a.c_scheda_secondaria 
WHERE a.c_magazzino_ast = @c_magazzino 
AND a.c_articolo = @c_articolo 
AND a.c_scheda = @c_scheda
GO

IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_base_calcolo_royalti'
                 AND SO.name='ditte')
BEGIN
  ALTER TABLE ditte ADD 
       fg_base_calcolo_royalti smallint NOT NULL DEFAULT (0)
END
GO


IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_cadenza_gg_rilascio'
                 AND SO.name='tab_lead_time_rivenditori')
BEGIN
  ALTER TABLE tab_lead_time_rivenditori ADD 
       fg_cadenza_gg_rilascio integer NOT NULL DEFAULT (1),
       gg_rilascio            integer NOT NULL DEFAULT (0),
       gg_rilascio_bis        integer NOT NULL DEFAULT (0),
       gg_rilascio_ter        integer NOT NULL DEFAULT (0),
       fg_tipo_gg_rilascio    integer NOT NULL DEFAULT (1) 
END
GO


IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='c_griglia_varianti'
                 AND SO.name='tab_lead_time_rivenditori')
BEGIN
  ALTER TABLE tab_lead_time_rivenditori ADD 
       c_griglia_varianti varchar(6) NOT NULL DEFAULT ('*')

END
GO


IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='c_nazione_piva'
                 AND SO.name='nomi')
BEGIN
  alter table nomi add c_nazione_piva varchar(3) NOT NULL default('*')
END
go


IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'fg_ignora_zeri'
      AND A.id=C.id
      AND C.name='fornitori')=0
BEGIN
  alter table fornitori add fg_ignora_zeri integer not null default (0)
	alter table fornitori add ds_caratteri_da_ignorare varchar(250) not null default (' ')
END
GO

delete fornitori 
GO


IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_arrotonda_prezzo_netto'
                 AND SO.name='fornitori')
BEGIN
  ALTER TABLE fornitori ADD
  fg_arrotonda_prezzo_netto integer NOT NULL DEFAULT(0),
  n_cifre_prezzo_netto integer NOT NULL DEFAULT(0)
END
GO


IF NOT EXISTS (SELECT *
               FROM syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='c_calcolo_date'
                 AND SO.name='ditte')
BEGIN
  ALTER TABLE ditte ADD 
       c_calcolo_date DCodTabStd NOT NULL DEFAULT ('*')
END
GO

IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'fg_riga_collo_unitaria'
      AND A.id=C.id
      AND C.type='U'
      AND C.name='art_spedizione')=0
BEGIN
  ALTER TABLE art_spedizione ADD
    fg_riga_collo_unitaria integer NOT NULL DEFAULT 0
END
GO


if OBJECT_ID('s3_sp_drop_cns') is NOT NULL 
DROP PROCEDURE s3_sp_drop_cns
go

CREATE PROCEDURE s3_sp_drop_cns

@table varchar(128),
@field varchar(128)

AS

DECLARE
@constraints varchar(128)

IF (SELECT COUNT(SO2.name)
    FROM sysconstraints SC1,
         syscolumns SC2,
         sysobjects SO1,
         sysobjects SO2
    WHERE SC1.id=SO1.id
      AND SC1.colid=SC2.colid
      AND SC2.id=SO1.id
      AND SC1.constid=SO2.id  
      AND SO1.name=@table
      AND SC2.name=@field
      AND SO2.name IS not NULL
      AND SO2.name<>'')>0
BEGIN

 DECLARE crs CURSOR FOR

 SELECT SO2.name
 FROM sysconstraints SC1,
      syscolumns SC2,
      sysobjects SO1,
      sysobjects SO2
 WHERE SC1.id=SO1.id
   AND SC1.colid=SC2.colid
   AND SC2.id=SO1.id
   AND SC1.constid=SO2.id      
   AND SO1.name=@table
   AND SC2.name=@field
   AND SO2.name IS not NULL
   AND SO2.name<>''

 OPEN crs

 FETCH NEXT FROM crs INTO @constraints
 WHILE (@@FETCH_STATUS <> -1)
 BEGIN
    EXECUTE ('ALTER TABLE '+@table+' DROP CONSTRAINT ' + @constraints)
   FETCH NEXT FROM crs INTO @constraints
 END

 CLOSE crs

 DEALLOCATE crs
END
GO


if OBJECT_ID('s3_sp_drop_df') is NOT NULL 
DROP PROCEDURE s3_sp_drop_df
go

CREATE PROCEDURE s3_sp_drop_df

@table varchar(128),
@field varchar(128)

AS

DECLARE
@check varchar(128)

IF (SELECT COUNT(SO2.name)
    FROM sysconstraints SC1,
         syscolumns SC2,
         sysobjects SO1,
         sysobjects SO2
    WHERE SC1.id=SO1.id
      AND SC1.colid=SC2.colid
      AND SC2.id=SO1.id
      AND SC1.constid=SO2.id  
      AND SO2.type='D' 
      AND SO1.name=@table
      AND SC2.name=@field
      AND SO2.name IS not NULL
      AND SO2.name<>'')>0
BEGIN

 SELECT @check=SO2.name
 FROM sysconstraints SC1,
      syscolumns SC2,
      sysobjects SO1,
      sysobjects SO2
 WHERE SC1.id=SO1.id
   AND SC1.colid=SC2.colid
   AND SC2.id=SO1.id
   AND SC1.constid=SO2.id      
      AND SO2.type='D' 
   AND SO1.name=@table
   AND SC2.name=@field
   AND SO2.name IS not NULL
   AND SO2.name<>''

 EXECUTE ('ALTER TABLE '+@table+' DROP CONSTRAINT ' + @check)

END
GO


s3_sp_drop_df 'nomi_destinazioni_diverse', 'gg_chiusura'
go
s3_sp_drop_cns 'nomi_destinazioni_diverse', 'gg_chiusura'
go

ALTER TABLE nomi_destinazioni_diverse
alter column gg_chiusura smallint not null 
go

s3_sp_drop_cns 'nomi_destinazioni_diverse', 'fg_chiusura'
go
s3_sp_drop_df 'nomi_destinazioni_diverse', 'fg_chiusura'
go


ALTER TABLE nomi_destinazioni_diverse
alter column fg_chiusura smallint null
go




IF (SELECT COUNT(C.name)
    FROM sysobjects C
    WHERE C.type='U'
      AND C.name='tab_dizionario')=0
BEGIN

  CREATE TABLE tab_dizionario(c_lingua varchar(3) NOT NULL DEFAULT('*'),
  parola_italiana varchar(850) NOT NULL ,
  parola_lingua nvarchar(850) NOT NULL)
  
  ALTER TABLE tab_dizionario
       ADD PRIMARY KEY (c_lingua, parola_italiana)

END
GO



IF NOT EXISTS (SELECT *
               FROM sysobjects a, syscolumns b
               WHERE a.id = b.id
                 and a.name = 'art_generali'
                 and b.name = 'c_tipologia_config') 
BEGIN
  
  ALTER TABLE art_generali
    ADD c_tipologia_config varchar(10) NOT NULL DEFAULT('*')


END
go

IF NOT EXISTS (SELECT a.id
       FROM sysobjects a, syscolumns b
       WHERE  a.id = b.id
       and a.name = 'fornitori'
       and b.name = 'fg_tipo_fattura_gf') 
BEGIN  
  ALTER TABLE fornitori add fg_tipo_fattura_gf DIntDefZero not null default 0
END
GO

IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'fg_pz_unitario_xml'
      AND A.id=C.id
      AND C.name='fornitori')=0
BEGIN
  ALTER TABLE fornitori ADD fg_pz_unitario_xml DIntDefZero NOT NULL DEFAULT 0
END
GO

IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'store_riga_comando_grafica'
      AND A.id=C.id
      AND C.type='U'
      AND C.name='tab_grafica_attiva')=0
BEGIN
  ALTER TABLE tab_grafica_attiva ADD store_riga_comando_grafica varchar(50) not null DEFAULT (' ')
END
GO



IF (SELECT COUNT(C.name)
    FROM sysobjects C
    WHERE C.type='P'
      AND C.name='s3_sp_leggi_scheda_con_var')=1
  DROP PROCEDURE s3_sp_leggi_scheda_con_var
GO

CREATE PROCEDURE s3_sp_leggi_scheda_con_var
@c_articolo DCodArticolo,
@c_scheda DCodSchedaTecnica,
@c_neutra varchar(3)
AS
SELECT A.c_famiglia, A.c_modello, A.n_dim_1, A.n_dim_2, A.n_dim_3,
B.c_categoria, B.c_valore, B.c_gruppo_categoria, 
COALESCE((SELECT MIN(GV.c_valore)
                FROM griglie_varianti GV, varianti_generali C 
                WHERE GV.c_griglia_varianti = AG.c_griglia_varianti
                AND GV.c_famiglia = A.c_famiglia 
                AND GV.c_modello = A.c_modello 
                AND GV.c_categoria = B.c_categoria 
                AND GV.c_elenco_varianti <> 0
                AND C.c_elenco_varianti = GV.c_elenco_varianti
                AND C.c_valore = B.c_valore), B.c_valore) c_valore_non_significativo,
VDU.c_valore_1, VDU.c_valore_2, VDU.c_valore_3, VDU.c_valore_4,
VDU.c_valore_5, VDU.c_valore_6, VDU.c_valore_7, VDU.c_valore_8,
VDU.c_valore_9
, V.n_valore
FROM art_generali AG WITH (NOLOCK), schede_tecniche A WITH (NOLOCK) 
LEFT JOIN schede_tecniche_categorie B WITH (NOLOCK) 
ON A.c_scheda = B.c_scheda 
LEFT JOIN valori V WITH (NOLOCK) 
on B.c_gruppo_categoria = V.c_gruppo_categoria
and B.c_valore = V.c_valore
LEFT JOIN valori_dati_ulteriori VDU WITH (NOLOCK) 
ON VDU.c_gruppo_categoria = B.c_gruppo_categoria
AND VDU.c_valore = B.c_valore
WHERE A.c_scheda = @c_scheda
  AND AG.c_articolo = @c_articolo
OPTION (KEEP PLAN)
go


IF (SELECT COUNT(C.name)
    FROM sysobjects C
    WHERE C.type='P'
      AND C.name='s3_sp_leggi_regole_vestizione_new')=1
  DROP PROCEDURE s3_sp_leggi_regole_vestizione_new
GO


CREATE PROCEDURE [dbo].[s3_sp_leggi_regole_vestizione_new]  
@c_famiglia varchar(3),  
@c_modello varchar(6),  
@c_griglia varchar(6),  
@c_listino varchar(3),  
@c_articolo varchar(16),  
@c_articolo_alias varchar(16),  
@c_neutra varchar(1),  
@fg_tipo_reperimento int = 0,  
@c_canale varchar(10) = '*'  
AS  
SELECT A.n_id, A.fg_not, A.c_articolo, B.c_categoria, B.c_gruppo_categoria, B.c_valore,  
B.c_valore_1, B.c_valore_2, B.c_valore_3, B.c_valore_4, B.c_valore_5, B.c_valore_6, B.c_valore_7,  
B.fg_su_stato_variante, B.fg_stato_variante, B.fg_su_inclus_esclus, B.fg_inclus_esclus,  
B.fg_su_opzione_standard, B.fg_opzione_standard, B.fg_su_fuori_linea_commerciale,  
B.fg_fuori_linea_commerciale, B.dt_fuori_linea, B.dt_in_linea, B.fg_su_ord_valore, B.n_ord_valore,  
B.fg_su_ord_categoria, B.n_ord_categoria, B.fg_su_non_obbligatorio, B.fg_non_obbligatorio,  
B.dt_inizio_validita, B.dt_fine_validita,A.c_gruppo_vestizione,  
B.c_valore_8, B.c_valore_9, A.fg_proprieta_contesto,  
A.c_famiglia_contenitore, A.c_modello_contenitore,   
A.c_griglia_varianti_contenitore, A.c_articolo_contenitore, A.c_gruppo_vestizione_contenitore,  
B.c_categoria_contenitore, B.fg_su_altri_valori, B.fg_elenco_valori_incluso, B.c_tipo_regola,  
A.fg_articolo, A.fg_articolo_contenitore, A.fg_gruppo, A.fg_gruppo_contenitore,  
A.elenco_valori, C.n_vars
FROM griglie_varianti_regola A WITH (NOLOCK)  
INNER JOIN griglie_varianti_regola_testa B WITH (NOLOCK)  
ON B.n_id = A.n_id  
OUTER APPLY (SELECT COUNT(*) AS n_vars
FROM griglie_varianti_regola_riga C WITH (NOLOCK)  
WHERE C.n_id = A.n_id) AS C
LEFT JOIN valori V WITH (NOLOCK) 
ON V.c_gruppo_categoria = B.c_gruppo_categoria  
AND V.c_valore = B.c_valore  
WHERE A.c_famiglia IN (@c_neutra, @c_famiglia)  
AND A.c_modello IN (@c_neutra, @c_modello)  
AND A.c_griglia_varianti IN (@c_neutra, @c_griglia)  
AND A.c_canale IN (@c_neutra, @c_canale)  
AND A.c_listino IN (@c_neutra, @c_listino)  
AND EXISTS (SELECT 1  
FROM griglie_varianti_categoria Z WITH (NOLOCK), categorie Y WITH (NOLOCK)  
WHERE Z.c_famiglia = @c_famiglia  
AND Z.c_modello = @c_modello  
AND Z.c_griglia_varianti = @c_griglia  
AND Y.c_categoria = Z.c_categoria  
AND Y.c_gruppo_categoria = B.c_gruppo_categoria)  
AND ((@fg_tipo_reperimento = 0 AND ((B.fg_su_inclus_esclus = 1) OR (B.fg_su_inclus_esclus = 0 AND A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias))))  
OR (@fg_tipo_reperimento = 1 AND B.fg_su_non_obbligatorio = 1 AND A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias)))  
ORDER BY A.fg_not DESC, A.n_ordinamento DESC,  
CASE WHEN A.elenco_valori IS NOT NULL  
THEN 2  
WHEN B.c_valore = @c_neutra THEN 0  
WHEN V.fg_significativo = 0 THEN 1 ELSE 3 END DESC,  
A.c_famiglia DESC, A.c_modello DESC, A.c_griglia_varianti DESC, A.c_articolo DESC, A.c_listino DESC, A.c_gruppo_vestizione DESC,   
A.c_famiglia_contenitore DESC, A.c_modello_contenitore DESC, A.c_griglia_varianti_contenitore DESC, A.c_articolo_contenitore DESC, A.c_gruppo_vestizione_contenitore DESC,   
A.n_id
go

IF (SELECT COUNT(C.name)
    FROM sysobjects C
    WHERE C.type='P'
      AND C.name='ts_sp_leggi_regole_vestizione_contentitore_1')=1
  DROP PROCEDURE ts_sp_leggi_regole_vestizione_contentitore_1
GO


CREATE PROCEDURE [dbo].ts_sp_leggi_regole_vestizione_contentitore_1
@c_famiglia varchar(3), @c_modello varchar(6), @c_griglia varchar(6), @c_listino varchar(3), @c_articolo varchar(16), @c_articolo_alias varchar(16), @c_neutra varchar(1), 
@fg_tipo_reperimento int, @c_canale varchar(10), 
@gv1 varchar(15), @gv2 varchar(15), @gv3 varchar(15), @gv4 varchar(15), @gv5 varchar(15), @gv6 varchar(15), @gv7 varchar(15), @gv8 varchar(15), @gv9 varchar(15), @gv10 varchar(15), 
@ac1 varchar(16), @ac2 varchar(16), @ac3 varchar(16), @ac4 varchar(16), @ac5 varchar(16), @ac6 varchar(16), @ac7 varchar(16), @ac8 varchar(16), @ac9 varchar(16), @ac10 varchar(16),
@fc1 varchar(3), @fc2 varchar(3), @fc3 varchar(3), @fc4 varchar(3), @fc5 varchar(3), @fc6 varchar(3), @fc7 varchar(3), @fc8 varchar(3), @fc9 varchar(3), @fc10 varchar(3),
@mc1 varchar(6), @mc2 varchar(6), @mc3 varchar(6), @mc4 varchar(6), @mc5 varchar(6), @mc6 varchar(6), @mc7 varchar(6), @mc8 varchar(6), @mc9 varchar(6), @mc10 varchar(6),
@gvc1 varchar(6), @gvc2 varchar(6), @gvc3 varchar(6), @gvc4 varchar(6), @gvc5 varchar(6), @gvc6 varchar(6), @gvc7 varchar(6), @gvc8 varchar(6), @gvc9 varchar(6), @gvc10 varchar(6),
@grc1 varchar(15), @grc2 varchar(15), @grc3 varchar(15), @grc4 varchar(15), @grc5 varchar(15), @grc6 varchar(15), @grc7 varchar(15), @grc8 varchar(15), @grc9 varchar(15), @grc10 varchar(15), 
@cat1 varchar(10), @cat2 varchar(10), @cat3 varchar(10), @cat4 varchar(10), @cat5 varchar(10), @cat6 varchar(10), @cat7 varchar(10), @cat8 varchar(10), @cat9 varchar(10), @cat10 varchar(10),
@cat11 varchar(10), @cat12 varchar(10), @cat13 varchar(10), @cat14 varchar(10), @cat15 varchar(10), @cat16 varchar(10), @cat17 varchar(10), @cat18 varchar(10), @cat19 varchar(10), @cat20 varchar(10),
@cat21 varchar(10), @cat22 varchar(10), @cat23 varchar(10), @cat24 varchar(10), @cat25 varchar(10), @cat26 varchar(10), @cat27 varchar(10), @cat28 varchar(10), @cat29 varchar(10), @cat30 varchar(10),
@cat31 varchar(10), @cat32 varchar(10), @cat33 varchar(10), @cat34 varchar(10), @cat35 varchar(10), @cat36 varchar(10), @cat37 varchar(10), @cat38 varchar(10), @cat39 varchar(10), @cat40 varchar(10),
@cat41 varchar(10), @cat42 varchar(10), @cat43 varchar(10), @cat44 varchar(10), @cat45 varchar(10), @cat46 varchar(10), @cat47 varchar(10), @cat48 varchar(10), @cat49 varchar(10), @cat50 varchar(10),
@gcat1 varchar(10), @gcat2 varchar(10), @gcat3 varchar(10), @gcat4 varchar(10), @gcat5 varchar(10), @gcat6 varchar(10), @gcat7 varchar(10), @gcat8 varchar(10), @gcat9 varchar(10), @gcat10 varchar(10),
@gcat11 varchar(10), @gcat12 varchar(10), @gcat13 varchar(10), @gcat14 varchar(10), @gcat15 varchar(10), @gcat16 varchar(10), @gcat17 varchar(10), @gcat18 varchar(10), @gcat19 varchar(10), @gcat20 varchar(10),
@gcat21 varchar(10), @gcat22 varchar(10), @gcat23 varchar(10), @gcat24 varchar(10), @gcat25 varchar(10), @gcat26 varchar(10), @gcat27 varchar(10), @gcat28 varchar(10), @gcat29 varchar(10), @gcat30 varchar(10),
@gcat31 varchar(10), @gcat32 varchar(10), @gcat33 varchar(10), @gcat34 varchar(10), @gcat35 varchar(10), @gcat36 varchar(10), @gcat37 varchar(10), @gcat38 varchar(10), @gcat39 varchar(10), @gcat40 varchar(10),
@gcat41 varchar(10), @gcat42 varchar(10), @gcat43 varchar(10), @gcat44 varchar(10), @gcat45 varchar(10), @gcat46 varchar(10), @gcat47 varchar(10), @gcat48 varchar(10), @gcat49 varchar(10), @gcat50 varchar(10)
AS  
SELECT A.n_id, A.fg_not, A.c_articolo, B.c_categoria, B.c_gruppo_categoria, B.c_valore,  
B.c_valore_1, B.c_valore_2, B.c_valore_3, B.c_valore_4, B.c_valore_5, B.c_valore_6, B.c_valore_7,  
B.fg_su_stato_variante, B.fg_stato_variante, B.fg_su_inclus_esclus, B.fg_inclus_esclus,  
B.fg_su_opzione_standard, B.fg_opzione_standard, B.fg_su_fuori_linea_commerciale,  
B.fg_fuori_linea_commerciale, B.dt_fuori_linea, B.dt_in_linea, B.fg_su_ord_valore, B.n_ord_valore,  
B.fg_su_ord_categoria, B.n_ord_categoria, B.fg_su_non_obbligatorio, B.fg_non_obbligatorio,  
B.dt_inizio_validita, B.dt_fine_validita, A.c_gruppo_vestizione,  
B.c_valore_8, B.c_valore_9, A.fg_proprieta_contesto,  
A.c_famiglia_contenitore, A.c_modello_contenitore,   
A.c_griglia_varianti_contenitore, A.c_articolo_contenitore, A.c_gruppo_vestizione_contenitore,  
B.c_categoria_contenitore, B.fg_su_altri_valori, B.fg_elenco_valori_incluso, B.c_tipo_regola,  
A.fg_articolo, A.fg_articolo_contenitore, A.fg_gruppo, A.fg_gruppo_contenitore,  
A.elenco_valori, C.n_vars
FROM griglie_varianti_regola A WITH (NOLOCK, FORCESEEK) 
INNER JOIN griglie_varianti_regola_testa B WITH (NOLOCK, FORCESEEK)  
ON B.n_id = A.n_id
LEFT JOIN valori V WITH (NOLOCK, FORCESEEK) 
ON V.c_gruppo_categoria = A.c_gruppo_categoria_regola
AND V.c_valore = A.c_valore_regola
OUTER APPLY (SELECT COUNT(*) AS n_vars
FROM griglie_varianti_regola_riga C WITH (NOLOCK, FORCESEEK)  
WHERE C.n_id = A.n_id) AS C
WHERE A.c_griglia_varianti IN (@c_neutra, @c_griglia)  
AND A.c_famiglia IN (@c_neutra, @c_famiglia)  
AND A.c_modello IN (@c_neutra, @c_modello)  
AND A.c_canale IN (@c_neutra, @c_canale)  
AND A.c_listino IN (@c_neutra, @c_listino)
AND A.c_categoria_regola IN (@c_neutra, @cat1, @cat2, @cat3, @cat4, @cat5, @cat6, @cat7, @cat8, @cat9, @cat10,
@cat11, @cat12, @cat13, @cat14, @cat15, @cat16, @cat17, @cat18, @cat19, @cat20,
@cat21, @cat22, @cat23, @cat24, @cat25, @cat26, @cat27, @cat28, @cat29, @cat30,
@cat31, @cat32, @cat33, @cat34, @cat35, @cat36, @cat37, @cat38, @cat39, @cat40,
@cat41, @cat42, @cat43, @cat44, @cat45, @cat46, @cat47, @cat48, @cat49, @cat50)
AND A.c_gruppo_categoria_regola IN (@gcat1, @gcat2, @gcat3, @gcat4, @gcat5, @gcat6, @gcat7, @gcat8, @gcat9, @gcat10,
@gcat11, @gcat12, @gcat13, @gcat14, @gcat15, @gcat16, @gcat17, @gcat18, @gcat19, @gcat20,
@gcat21, @gcat22, @gcat23, @gcat24, @gcat25, @gcat26, @gcat27, @gcat28, @gcat29, @gcat30,
@gcat31, @gcat32, @gcat33, @gcat34, @gcat35, @gcat36, @gcat37, @gcat38, @gcat39, @gcat40,
@gcat41, @gcat42, @gcat43, @gcat44, @gcat45, @gcat46, @gcat47, @gcat48, @gcat49, @gcat50)
AND (
  (@fg_tipo_reperimento = 0 AND
   (
     ((A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias)
       AND A.c_gruppo_vestizione IN (@c_neutra, @gv1, @gv2, @gv3, @gv4, @gv5, @gv6, @gv7, @gv8, @gv9, @gv10)  
       AND A.c_articolo_contenitore IN (@c_neutra, @ac1, @ac2, @ac3, @ac4, @ac5, @ac6, @ac7, @ac8, @ac9, @ac10)
       AND A.c_famiglia_contenitore IN (@c_neutra, @fc1, @fc2, @fc3, @fc4, @fc5, @fc6, @fc7, @fc8, @fc9, @fc10)
       AND A.c_modello_contenitore IN (@c_neutra, @mc1, @mc2, @mc3, @mc4, @mc5, @mc6, @mc7, @mc8, @mc9, @mc10)
       AND A.c_griglia_varianti_contenitore IN (@c_neutra, @gvc1, @gvc2, @gvc3, @gvc4, @gvc5, @gvc6, @gvc7, @gvc8, @gvc9, @gvc10)
       AND A.c_gruppo_vestizione_contenitore IN (@c_neutra, @grc1, @grc2, @grc3, @grc4, @grc5, @grc6, @grc7, @grc8, @grc9, @grc10)
      )
      OR (A.c_articolo <> @c_neutra AND A.fg_articolo IN (1,2))
      OR (A.c_articolo_contenitore <> @c_neutra AND A.fg_articolo_contenitore IN (1,2))
      OR (A.c_gruppo_vestizione <> @c_neutra AND A.fg_gruppo IN (1,2))
      OR (A.c_gruppo_vestizione_contenitore <> @c_neutra AND A.fg_gruppo_contenitore IN (1,2))
     )
    ) 
   )
  OR 
  (@fg_tipo_reperimento = 1 
   AND A.fg_su_non_obbligatorio_testa = 1 
   AND A.c_articolo IN (@c_neutra, @c_articolo, @c_articolo_alias)
  )
)
ORDER BY A.fg_not DESC, A.n_ordinamento DESC,  
CASE WHEN A.elenco_valori IS NOT NULL  
THEN 2  
WHEN A.c_valore_regola = @c_neutra THEN 0  
WHEN V.fg_significativo = 0 THEN 1 ELSE 3 END DESC,
A.c_famiglia DESC, A.c_modello DESC, A.c_griglia_varianti DESC, A.c_articolo DESC, A.c_listino DESC, A.c_gruppo_vestizione DESC,
A.c_famiglia_contenitore DESC, A.c_modello_contenitore DESC, A.c_griglia_varianti_contenitore DESC, A.c_articolo_contenitore DESC,
A.c_gruppo_vestizione_contenitore DESC, A.n_id
OPTION (KEEP PLAN)
GO


IF NOT EXISTS (SELECT *
               FROM sysobjects a, syscolumns b
               WHERE a.id = b.id
                 and a.name = 'art_amministrativi'
                 and b.name = 'c_classe_merceologica') 
BEGIN
  ALTER TABLE art_amministrativi ADD c_classe_merceologica DCodTabStd NOT NULL DEFAULT '*';
END
GO


IF NOT EXISTS (SELECT *
               FROM sysobjects a, syscolumns b
               WHERE a.id = b.id
                 and a.name = 'art_amministrativi'
                 and b.name = 'c_gruppo_fiscale') 
BEGIN
  ALTER TABLE art_amministrativi ADD c_gruppo_fiscale DCodTabStd NOT NULL DEFAULT '*';
END
GO

IF NOT EXISTS (SELECT *
               FROM sysobjects a, syscolumns b
               WHERE a.id = b.id
                 and a.name = 'tab_grafica_attiva'
                 and b.name = 'fg_stato_grafico_in_errore_passaggio_stato') 
BEGIN

  ALTER TABLE tab_grafica_attiva ADD
  fg_stato_grafico_in_errore_passaggio_stato integer NOT NULL DEFAULT 1
END
go


IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'n_addetti_turno'
      AND A.id=C.id
      AND C.type='U'
      AND C.name='calendari_turni')=0
BEGIN
  ALTER TABLE calendari_turni ADD n_addetti_turno DIntDefZero NOT NULL DEFAULT(0)
END
GO


IF (SELECT COUNT(c.name)
    FROM syscolumns as c,
         sysobjects as o
    WHERE c.name like 'fg_impegna_movimenta'
      AND c.id=o.id
      AND o.type='U'
      AND o.name='ditte')=0
BEGIN
  ALTER TABLE ditte ADD fg_impegna_movimenta DIntDefZero NOT NULL DEFAULT(0)
END
GO

