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 NOT EXISTS (SELECT *
               FROM sysobjects SO
               WHERE SO.name='modelli_ditte'
               AND type = 'U')
BEGIN
  CREATE TABLE modelli_ditte(
  c_modello varchar(6) NOT NULL,
  c_ditta integer NOT NULL)
  
  ALTER TABLE modelli_ditte ADD PRIMARY KEY(c_modello, c_ditta)
END
GO

IF NOT EXISTS (SELECT *
               FROM sysobjects SO
               WHERE SO.name='famiglie_ditte'
               AND type = 'U')
BEGIN
  CREATE TABLE famiglie_ditte(
  c_famiglia varchar(3) NOT NULL,
  c_ditta integer  NOT NULL)
  
  ALTER TABLE famiglie_ditte ADD PRIMARY KEY(c_famiglia, c_ditta)
END
GO


IF NOT EXISTS (SELECT *
               FROM sysobjects SO
               WHERE SO.name='valori_ditte'
               AND type = 'U')
BEGIN
  CREATE TABLE valori_ditte(
  c_gruppo_categoria varchar(10) NOT NULL,
  c_valore varchar(10) NOT NULL,
  c_ditta integer NOT NULL,
  dt_entrata_vigore_da datetime NULL,
  dt_entrata_vigore_a datetime NULL)
  
  ALTER TABLE valori_ditte ADD PRIMARY KEY(c_gruppo_categoria, c_valore, c_ditta)
END
GO

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



IF NOT EXISTS (SELECT *
               FROM syscolumns SC,sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_a_catalogo'
                 AND SO.name='valori_ditte')
BEGIN
  ALTER TABLE valori_ditte ADD fg_a_catalogo integer NOT NULL  DEFAULT (1),
  fg_presenza_promo integer NOT NULL  DEFAULT (0),
  c_gruppo_categoria_alt varchar(10) NULL,
  c_valore_alt varchar(10) NULL

END
go

IF NOT EXISTS (SELECT *
               FROM syscolumns SC,sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_presenza_promo'
                 AND SO.name='valori')
BEGIN
  ALTER TABLE valori ADD fg_presenza_promo integer NOT NULL  DEFAULT (0),
  c_gruppo_categoria_alt varchar(10) NULL,
  c_valore_alt varchar(10) NULL

END
go

IF NOT EXISTS (SELECT *
               FROM syscolumns SC,sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_stato_variante'
                 AND SO.name='valori')
BEGIN
  ALTER TABLE valori ADD fg_stato_variante integer NULL,
  dt_a_partire_da_sv datetime NULL
END
go


IF NOT EXISTS (SELECT *
               FROM syscolumns SC,sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_stato_variante'
                 AND SO.name='valori_ditte')
BEGIN
  ALTER TABLE valori_ditte ADD fg_stato_variante integer NULL,
  dt_a_partire_da_sv datetime NULL
END
go

IF NOT EXISTS (SELECT *
               FROM syscolumns SC,sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_ditta_obbligatoria'
                 AND SO.name='tab_gruppi_categorie')
BEGIN
  ALTER TABLE tab_gruppi_categorie ADD fg_ditta_obbligatoria integer NOT NULL  DEFAULT (0)
END
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

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

IF (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'fg_da_definire'
      AND A.id=C.id
      AND C.type='U'
      AND C.name='tab_lead_time_rivenditori')=0
BEGIN

  ALTER TABLE tab_lead_time_rivenditori
  ADD fg_da_definire integer NOT NULL DEFAULT (0)

END
go

