
if (select count(*)
    from syscolumns c, sysobjects o
    where o.id = c.id
      and o.name = 'fornitori'
      and c.name = 'fg_segnala_in_fatture_ricevute') = 0
begin
  alter table fornitori
  add fg_segnala_in_fatture_ricevute DIntDefZero not null default 0;
end
go


IF (SELECT COUNT(T.name)
    FROM sysobjects T, syscolumns C
    WHERE T.type='U'
      AND T.name='tab_piano_codifica'
      AND T.id = C.id
      AND C.name = 'fg_genera_solo_obbligatorie')=0
BEGIN
 ALTER TABLE tab_piano_codifica
 ADD fg_genera_solo_obbligatorie DIntDefZero not null default 0
END
GO

IF (SELECT COUNT(T.name)
    FROM sysobjects T, syscolumns C
    WHERE T.type='U'
      AND T.name='tab_piano_codifica'
      AND T.id = C.id
      AND C.name = 'fg_genera_solo_terne_std')=0
BEGIN
 ALTER TABLE tab_piano_codifica
 ADD fg_genera_solo_terne_std DIntDefZero not null default 0
END
GO

IF (SELECT COUNT(T.name)
    FROM sysobjects T, syscolumns C
    WHERE T.type='U'
      AND T.name='tab_piano_codifica'
      AND T.id = C.id
      AND C.name = 'fg_modalita_generazione_auto')=0
BEGIN
 ALTER TABLE tab_piano_codifica
 ADD fg_modalita_generazione_auto DIntDefZero not null default 0
END
GO


IF (SELECT COUNT(T.name)
    FROM sysobjects T, syscolumns C
    WHERE T.type='U'
      AND T.name='tab_piano_codifica'
      AND T.id = C.id
      AND C.name = 'causali_ord_cli_escluse')=0
BEGIN
 ALTER TABLE tab_piano_codifica
 ADD causali_ord_cli_escluse DDescrMoltoLunga NOT NULL DEFAULT ('')
END
GO


IF OBJECT_ID('tab_politica_pianificazione') IS NULL
BEGIN
CREATE TABLE [dbo].[tab_politica_pianificazione](
	[c_politica_pianificazione] varchar(3) NOT NULL,
	[ds_politica_pianif] varchar(40) NOT NULL,
	[ds_abbr_politica_pianif] varchar(15) NOT NULL,
	[annullato] integer NOT NULL,
	[gg_rilascio_prima_dt_inizio] integer NOT NULL,
	[fg_aggiungi_sfrido] integer NOT NULL,
	[fg_tipo_politica] integer NOT NULL,
	[fg_stato_default_ppp] integer NOT NULL,
	[fg_stato_oc_min_rilascio] integer NOT NULL,
	[fg_crea_auto_op_proposte] integer NOT NULL,
	[fg_stato_default_op] integer NOT NULL,
	[fg_congela_ppp_oltre_orizzonte] integer NOT NULL,
	[fg_genera_op_per_giac_neg] integer NOT NULL,
	[fg_tipo_cmg_per_rop] integer NOT NULL,
	[gg_rilascio_prima_ptf] integer NOT NULL,
	[dt_creazione] datetime NOT NULL,
	[dt_modifica] datetime NOT NULL,
	[utente_creazione] varchar(250) NOT NULL,
	[utente_modifica] varchar(250) NOT NULL,
	[ds_formula_1] varchar(40) NOT NULL,
	[formula_1] varchar(4000) NOT NULL,
	[ds_formula_2] varchar(40) NOT NULL,
	[formula_2] varchar(4000) NOT NULL,
	[ds_formula_3] varchar(40) NOT NULL,
	[formula_3] varchar(4000) NOT NULL,
	[fg_stato_oc_min_imp_mag] integer NOT NULL,
	[fg_includi_giacenza] integer NOT NULL,
	[fg_includi_ordini_vendita] integer NOT NULL,
	[fg_includi_ordini_prod_mont] integer NOT NULL,
	[fg_includi_ordini_fornitori] integer NOT NULL,
	[fg_includi_proposte_ordini] integer NOT NULL,
	[fg_tipo_scheda] integer NOT NULL,
	[fg_stato_of_min_rilascio] integer NOT NULL,
	[fg_adegua_con_gg_rilascio] tinyint NOT NULL,
	[fg_includi_impegni_mrp] integer NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[c_politica_pianificazione] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]


ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT ('*') FOR [c_politica_pianificazione]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [ds_politica_pianif]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [ds_abbr_politica_pianif]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [annullato]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [gg_rilascio_prima_dt_inizio]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [fg_aggiungi_sfrido]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_tipo_politica]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [fg_stato_default_ppp]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (5) FOR [fg_stato_oc_min_rilascio]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [fg_crea_auto_op_proposte]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [fg_stato_default_op]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [fg_congela_ppp_oltre_orizzonte]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [fg_genera_op_per_giac_neg]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_tipo_cmg_per_rop]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [gg_rilascio_prima_ptf]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (getdate()) FOR [dt_creazione]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (getdate()) FOR [dt_modifica]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [utente_creazione]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [utente_modifica]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [ds_formula_1]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [formula_1]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [ds_formula_2]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [formula_2]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [ds_formula_3]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (' ') FOR [formula_3]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (5) FOR [fg_stato_oc_min_imp_mag]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_includi_giacenza]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_includi_ordini_vendita]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_includi_ordini_prod_mont]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_includi_ordini_fornitori]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_includi_proposte_ordini]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (1) FOR [fg_tipo_scheda]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT (0) FOR [fg_stato_of_min_rilascio]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT ((0)) FOR [fg_adegua_con_gg_rilascio]
ALTER TABLE [dbo].[tab_politica_pianificazione] ADD  DEFAULT ((1)) FOR [fg_includi_impegni_mrp]

END
GO

IF OBJECT_ID('vdu_predisposizione_cappa') IS NULL
BEGIN
  CREATE TABLE vdu_predisposizione_cappa (
       c_predisposizione_cappa	VarChar(10) NOT NULL DEFAULT '*',
       ds_predisposizione_cappa	VarChar(40) NOT NULL DEFAULT ' '
  )

  ALTER TABLE vdu_predisposizione_cappa
       ADD PRIMARY KEY (c_predisposizione_cappa)
END
GO

if OBJECT_ID('s3_sp_leggi_dati_nome') is NOT NULL 
DROP procedure s3_sp_leggi_dati_nome
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,
       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.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
FROM art_generali A, art_amministrativi B, art_gestionali D, schede_tecniche N, schede_tecniche M, tab_magazzini TM, articolo_scheda_tecnica AST
    LEFT JOIN art_gestionali_magazzino AGM 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
    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_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,
       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.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
FROM art_generali A, art_amministrativi B, art_gestionali D,
tab_magazzini TM, articolo_scheda_tecnica AST 
LEFT JOIN art_codici_magazzino_scheda ACM
ON ACM.c_articolo = AST.c_articolo
AND ACM.c_scheda = AST.c_scheda_secondaria
LEFT JOIN art_gestionali_magazzino AGM
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, schede_tecniche M
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 (SELECT COUNT(A.name)
    FROM syscolumns A,
         sysobjects C
    WHERE A.name like 'fg_tipo_validita_riga'
      AND A.id=C.id
      AND C.type='U'
      AND C.name='varianti_documenti_regola_testa')=0
BEGIN
 alter table varianti_documenti_regola_testa add
       fg_tipo_validita_riga	integer NOT NULL DEFAULT (0)

END
GO

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

IF (SELECT COUNT(C.name)
    FROM sysobjects C
    WHERE C.type='U'
      AND C.name='tab_canale')=0
BEGIN
  CREATE TABLE tab_canale (
	 c_canale varchar(10) NOT NULL DEFAULT ('*'),
	 ds_canale varchar(40) NOT NULL DEFAULT (' '),
	 ds_abbr_canale varchar(15) NOT NULL DEFAULT (' '),
	 annullato integer NOT NULL DEFAULT (0),
  )

  ALTER TABLE tab_canale
		   ADD PRIMARY KEY (c_canale)
END
GO

if not exists(SELECT SO.name
		  	  FROM sysobjects SO
          	  WHERE SO.name='impostazioni_default_canale')
BEGIN
	CREATE TABLE impostazioni_default_canale (
	       c_canale             varchar(10) NOT NULL DEFAULT '*',
	       tabella				DDescrMoltoLunga NOT NULL DEFAULT ' ',
	       n_progressivo        integer NOT NULL DEFAULT (1),
	       n_ordinamento        integer NOT NULL DEFAULT (1),
	       field_name           varchar(250) NOT NULL DEFAULT ' ',
	       field_value          varchar(250) NOT NULL DEFAULT ' ',
	       fg_annullato         integer NOT NULL DEFAULT (0)
	)
	
	ALTER TABLE impostazioni_default_canale
	       ADD PRIMARY KEY (c_canale, tabella, n_progressivo)

END
GO

if not exists(SELECT SO.name
		  	  FROM sysobjects SO
          	  WHERE SO.name='parametri_canale')
BEGIN
	CREATE TABLE parametri_canale (
	       c_canale             varchar(10) NOT NULL DEFAULT '*',
	       nome_parametro		varchar(250) NOT NULL DEFAULT (' '), 
	       ds_parametro		varchar(250) NOT NULL DEFAULT (' '),
	       valore_parametro		varchar(250) NOT NULL DEFAULT (' ')
	)
	

	
	ALTER TABLE parametri_canale
	       ADD PRIMARY KEY (c_canale, nome_parametro)

END
GO

IF OBJECT_ID('LAGcmp_art_gestionali') IS NULL
BEGIN
  CREATE TABLE LAGcmp_art_gestionali (
       c_articolo	VarChar(16) NOT NULL DEFAULT '*',
       n_id_interno	integer NOT NULL DEFAULT 0,
       famiglia_bordatura	integer NULL ,
       codice_materiale	VarChar(15) NULL ,       
       indice_rotazione	VarChar(1) NULL   )

  ALTER TABLE LAGcmp_art_gestionali
       ADD PRIMARY KEY (c_articolo,n_id_interno)
END
GO

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



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

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

IF OBJECT_ID('LAGcmp_art_gestionali_magazzino') IS NULL
BEGIN
  CREATE TABLE LAGcmp_art_gestionali_magazzino (
       c_magazzino	VarChar(3) NOT NULL DEFAULT '*',
       c_articolo	VarChar(16) NOT NULL DEFAULT '*',
       c_scheda 	VarChar(8) NOT NULL DEFAULT '*',
       indice_rotazione	VarChar(1) NULL   )

  ALTER TABLE LAGcmp_art_gestionali_magazzino
       ADD PRIMARY KEY (c_magazzino,c_articolo,c_scheda )
END
GO