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







