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 syscolumns SC,
                    sysobjects SO
               WHERE SC.id=SO.id 
                 AND SC.name='fg_includi_riga_se_padre'
                 AND SO.name='varianti_documenti_regola_testa')
BEGIN
  ALTER TABLE varianti_documenti_regola_testa ADD fg_includi_riga_se_padre integer NOT NULL DEFAULT 1
END
go



IF NOT EXISTS (SELECT *
               FROM sysobjects SO
               WHERE SO.name='articoli_documenti_regola_testa')
BEGIN
  CREATE TABLE articoli_documenti_regola_testa (
	n_id integer NOT NULL DEFAULT 0,
    c_articolo DCodArticolo NOT NULL DEFAULT '*',
	n_priorita DIntDefZero NOT NULL DEFAULT 0,
	fg_tipo_validita_riga DIntDefZero NOT NULL DEFAULT 0,
	fg_includi integer NOT NULL DEFAULT 1,
	commento varchar(max) NULL,
    )

    ALTER TABLE articoli_documenti_regola_testa ADD PRIMARY KEY (n_id)

END
go


IF NOT EXISTS (SELECT *
               FROM sysobjects SO
               WHERE SO.name='articoli_documenti_regola_riga')
BEGIN
  CREATE TABLE articoli_documenti_regola_riga(
	n_id integer NOT NULL DEFAULT 0,
	c_documento integer NOT NULL DEFAULT 0,
	c_famiglia varchar(3) NOT NULL DEFAULT '*',
	c_modello varchar(6) NOT NULL DEFAULT '*',
	c_griglia_varianti varchar(6) NOT NULL DEFAULT '*',
    )

    ALTER TABLE articoli_documenti_regola_riga ADD PRIMARY KEY (n_id, c_documento, c_famiglia, c_modello, c_griglia_varianti)
END
go

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

IF NOT EXISTS (SELECT *
               FROM sysobjects SO
               WHERE SO.name='tab_tipi_nota')
BEGIN

CREATE TABLE [dbo].[tab_tipi_nota](
	[c_tipo_nota] varchar(15) NOT NULL DEFAULT ('*'),
	[ds_tipo_nota] varchar(40) NOT NULL DEFAULT (' '),
	[ds_abbr_tipo_nota] varchar(15) NOT NULL DEFAULT (' '),
	[annullato] integer NOT NULL DEFAULT ((0)) )

ALTER TABLE tab_tipi_nota ADD PRIMARY KEY (c_tipo_nota)

END
GO




