<?
$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[actualiza_datos]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[actualiza_datos]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";

$sql.="CREATE procedure [dbo].[actualiza_datos]       \n";
$sql.="as\n";
$sql.="begin try\n";
$sql.="	-- SET NOCOUNT ON added to prevent extra result sets from\n";
$sql.="	-- interfering with SELECT statements.\n";
$sql.="	declare @variable as datetime;\n";
$sql.="	Declare @fechaUltAct as int; -- fecha de ultima actualizacion motor 2, formato epoch\n";
$sql.="	declare @FechaActual as int;\n";
$sql.="	DECLARE @FechaInicial datetime;\n";
$sql.="	declare @deltafecha as int;\n";
$sql.="	\n";
$sql.="	\n";
$sql.="	set @fechainicial=cast('01/01/2005 00:00:00' as datetime)\n";
$sql.="	set @variable=dbo.fechamotor();\n";
$sql.="	set @deltafecha=4-datediff(hour,getdate(),GETUTCDATE()); -- 1 = para verano, 0 para invierno.\n";
$sql.="	\n";
$sql.="	\n";
$sql.="	select @fechaUltAct=fecha_ultcam from dbo.PF_HISTORICOULTIMAFECHA where ultimafechaid=1;\n";
$sql.="	set @FechaActual=(datediff(minute,@fechainicial,CURRENT_TIMESTAMP))-@deltafecha*60; -- fecha actual formato epoch\n";
$sql.="	\n";
$sql.="	\n";
$sql.="	\n";
$sql.="	SET NOCOUNT ON;\n";
$sql.="    -- actualiza la tabla de procesos con un intervalo indicado en cada proceso\n";
$sql.="	INSERT INTO dbo.pf_historico_proceso(fecha,sensor,sensor_tipo,camara,proceso,valor)\n";
$sql.="	select @FechaActual,d.LecturaDirModulo,d.LecturaDirtipo,a.id_camara,b.proceso_actual,CASE a.id_status when 'V' Then d.lecturavalor Else -666 End as valor\n";
$sql.="		from dbo.pf_sensorxcamara a,dbo.pf_camara b,dbo.pf_proceso c,dbo.MOTORLECTURAS d\n";
$sql.="			where d.LecturaDirtipo=a.lecturadirtipo \n";
$sql.="			and d.LecturaDirModulo=a.LecturaDirModulo\n";
$sql.="			and a.id_camara=b.id_camara\n";
$sql.="			and b.estado_actual in ('P','H') -- camaras en proceso y detenidas.\n";
$sql.="			and c.estado='P' -- proceso esta en proceso.\n";
$sql.="			and b.proceso_actual=c.id_proceso --parche\n";
$sql.="			and b.id_camara=c.id_camara\n";
$sql.="			and (@FechaActual-c.fecha_ultcam)>=c.frecuencia\n";
$sql.="			order by d.lecturadirmodulo,d.lecturadirtipo;\n";
$sql.="	IF @@ROWCOUNT <> 0\n";
$sql.="		update dbo.pf_proceso set fecha_ultcam=@FechaActual where  (@FechaActual-fecha_ultcam)>=frecuencia\n";
$sql.="		and estado='P'; -- parche\n";
$sql.="	-- actualiza la tabla historico cada 10 minutos.\n";
$sql.="	if @FechaActual-@fechaUltAct>=10\n";
$sql.="		begin\n";
$sql.="		insert into dbo.pf_historico(fecha,sensor,camara,sensor_tipo,valor)\n";
$sql.="		select @FechaActual,a.lecturadirmodulo,a.id_camara,d.LecturaDirtipo,CASE a.id_status when 'V' Then d.lecturavalor Else -666 End as valor\n";
$sql.="			from dbo.pf_sensorxcamara a,dbo.pf_camara b,dbo.MOTORLECTURAS d\n";
$sql.="				where d.LecturaDirtipo=a.lecturadirtipo\n";
$sql.="				and d.LecturaDirModulo=a.LecturaDirModulo\n";
$sql.="				and a.id_camara=b.id_camara\n";
$sql.="				and b.estado_actual in ('V','P','H') -- camaras activas(sin proceso), en proceso y detenidas, no camaras desabilitadas\n";
$sql.="				--and a.id_status='V' -- si registramos los sensores desconectados.\n";
$sql.="				order by d.lecturadirmodulo,d.lecturadirtipo;\n";
$sql.="		update dbo.pf_historicoultimafecha set fecha_ultcam=@FechaActual;\n";
$sql.="		end\n";
$sql.="		/*else\n";
$sql.="		begin\n";
$sql.="		--insert into dbo.pf_sistemalog(stringerror,procedimiento,fecha) values(@FechaActual,@fechaUltAct,getdate()); -- para debug.\n";
$sql.="		end\n";
$sql.="		*/\n";
$sql.="END TRY\n";
$sql.="BEGIN CATCH\n";
$sql.="	insert into dbo.pf_sistemalog(stringerror,procedimiento,fecha) values(ERROR_MESSAGE(),ERROR_PROCEDURE(),getdate());\n";
$sql.="end catch\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[borra_todo]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[borra_todo]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE PROCEDURE [dbo].[borra_todo]\n";
$sql.="AS\n";
$sql.="BEGIN\n";
$sql.="	-- SET NOCOUNT ON added to prevent extra result sets from\n";
$sql.="	-- interfering with SELECT statements.\n";
$sql.="	SET NOCOUNT ON;\n";
$sql.="delete from pf_historico;\n";
$sql.="delete from pf_historico_proceso;\n";
$sql.="delete from pf_log_proceso;\n";
$sql.="delete from pf_proceso;\n";
$sql.="delete from pf_sensorxproceso;\n";
$sql.="delete from pf_sistemalog;\n";
$sql.="delete from pf_tarja;\n";
$sql.="delete from pf_tarjaxproceso;\n";
$sql.="update pf_camara set estado_actual='V', proceso_actual=0;\n";
$sql.="DBCC CHECKIDENT (pf_proceso, RESEED, 0);\n";
$sql.="END\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[borramos_tarjaxproceso]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[borramos_tarjaxproceso]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[borramos_tarjaxproceso]\n";
$sql.="	@id_proceso int,\n";
$sql.="    @resultado nvarchar(200) OUTPUT	\n";
$sql.="AS\n";
$sql.="begin\n";
$sql.="delete from pf_tarjaxproceso where id_proceso=@id_proceso;\n";
$sql.="end\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[crear_log]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[crear_log]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="-- =============================================\n";
$sql.="-- Author:		<Author,,Name>\n";
$sql.="-- Create date: <Create Date,,>\n";
$sql.="-- Description:	<Description,,>\n";
$sql.="-- =============================================\n";
$sql.="CREATE PROCEDURE [dbo].[crear_log]\n";
$sql.="       @in_id_camara smallint,\n";
$sql.="       @in_id_proceso int,\n";
$sql.="       @in_fecha int,\n";
$sql.="       @in_mensaje varchar(100),\n";
$sql.="	   @in_creador varchar(100),\n";
$sql.="	   @in_id_mensaje smallint\n";
$sql.="AS\n";
$sql.="BEGIN\n";
$sql.="  /* Procedure body */\n";
$sql.="insert into pf_log_proceso(id_camara,id_proceso,mensaje,fecha,id_mensaje)\n";
$sql.="       values (@in_id_camara,@in_id_proceso,@in_mensaje,@in_fecha,@in_id_mensaje);\n";
$sql.="END\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[crear_proceso]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[crear_proceso]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[crear_proceso]\n";
$sql.="       @in_fecha_inicio int, -- no usada ya que usamos la fecha actual.\n";
$sql.="       @in_id_camara smallint,\n";
$sql.="       @in_estado char(1),\n";
$sql.="       @in_frecuencia smallint,\n";
$sql.="       @in_creador_inicial varchar(100),\n";
$sql.="       @in_pallets int,\n";
$sql.="       @in_puchos int,\n";
$sql.="       @in_bins int,\n";
$sql.="       @in_origen varchar(50),\n";
$sql.="       @in_destino varchar(50),\n";
$sql.="       @in_id_especie smallint,\n";
$sql.="       @in_id_envase smallint,\n";
$sql.="       @in_condicion_inicial varchar(50),\n";
$sql.="       @out_id_proceso smallint OUTPUT,\n";
$sql.="       @resultado nvarchar(200) OUTPUT\n";
$sql.="as\n";
$sql.="begin\n";
$sql.="	declare @FechaActual as int;\n";
$sql.="	declare @deltafecha as int;\n";
$sql.="	DECLARE @FechaInicial datetime;\n";
$sql.="set @fechainicial=cast('01/01/2005 00:00:00' as datetime)\n";
$sql.="	set @deltafecha=4-datediff(hour,getdate(),GETUTCDATE()); -- 1 = para verano, 0 para invierno.\n";
$sql.="set @FechaActual=(datediff(minute,@fechainicial,CURRENT_TIMESTAMP))-@deltafecha*60; -- fecha actual formato epoch\n";
$sql.="begin transaction\n";
$sql.="	INSERT INTO Pf_proceso(Fecha_inicio, Id_camara, Fecha_fin, Fecha_ultcam, Estado, Frecuencia,\n";
$sql.="	 Creador_inicial,creador_final, Pallets, Puchos, Bins, Origen, Destino, Id_especie, Id_envase, Condicion_inicial,condicion_final,num_giros)\n";
$sql.="	VALUES (@FechaActual, @in_id_camara, 0, (@Fechaactual+10), @in_estado, @in_frecuencia,\n";
$sql.="	 @in_creador_inicial,'', @in_pallets, @in_puchos, @in_bins, @in_origen, @in_destino, @in_id_especie,\n";
$sql.="	 @in_id_envase, @in_condicion_inicial,'',0); -- grabamos la fecha del ultimo cambio en 10 minutos en el futuro, esto evita una actualizacion\n";
$sql.="	SEt @out_id_proceso=Scope_identity()\n";
$sql.="	UPDATE Pf_camara\n";
$sql.="	SET Proceso_actual = @out_id_proceso,\n";
$sql.="		Estado_actual = 'P' where id_camara=@in_id_camara;\n";
$sql.="	SET @resultado = 'ok';\n";
$sql.="commit -- lo creamos lo mas rapido posible.\n";
$sql.="-- creamos los sensores del proceso.\n";
$sql.="	INSERT INTO pf_sensorxproceso (LecturaDirModulo,LecturaDirTipo,id_proceso,id_status\n";
$sql.="		   ,Nombre_modulo,limite_minimo,limite_maximo,orden,tipo_escala,solo_lectura)\n";
$sql.="	select LecturaDirModulo,LecturaDirTipo,@out_id_proceso,id_status\n";
$sql.="		   ,Nombre_modulo,limite_minimo,limite_maximo,orden,tipo_escala,solo_lectura from pf_sensorxcamara\n";
$sql.="		   where id_camara=@in_id_camara;\n";
$sql.="-- agregamos una linea de temperaturas cuando se crea un nuevo proceso.	\n";
$sql.="	delete from dbo.pf_historico_proceso where proceso=@out_id_proceso and fecha=@fechaactual; -- evitamos duplicados.    \n";
$sql.="	INSERT INTO dbo.pf_historico_proceso(fecha,sensor,sensor_tipo,camara,proceso,valor)\n";
$sql.="	select @FechaActual,d.LecturaDirModulo,d.LecturaDirtipo,a.id_camara,@out_id_proceso,CASE a.id_status when 'V' Then d.lecturavalor Else -666 End as valor\n";
$sql.="		from dbo.pf_sensorxcamara a,dbo.pf_camara b,dbo.MOTORLECTURAS d\n";
$sql.="			where d.LecturaDirtipo=a.lecturadirtipo \n";
$sql.="			and d.LecturaDirModulo=a.LecturaDirModulo\n";
$sql.="			and a.id_camara=b.id_camara\n";
$sql.="			and a.id_camara=@in_id_camara\n";
$sql.="			order by d.lecturadirmodulo,d.lecturadirtipo;\n";
$sql.="--guardamos el log.\n";
$sql.="	exec dbo.crear_log @in_id_camara,@out_id_proceso,@fechaactual,'Proceso Creado',@in_creador_inicial,1;\n";
$sql.="-- hechas todas las transacciones entonces marcamos la ultima fecha donde se guardo las temperaturas.\n";
$sql.="	update dbo.pf_proceso set fecha_ultcam=@FechaActual where  id_proceso=@out_id_proceso; --evitamos duplicados otra vez.\n";
$sql.="end\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[crear_productor]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[crear_productor]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[crear_productor]\n";
$sql.="@nombre nvarchar(200),\n";
$sql.=" @resultado nvarchar(200) OUTPUT\n";
$sql.="as\n";
$sql.="begin\n";
$sql.="    insert into pf_productor(nombre_productor) values (@nombre);\n";
$sql.="	set @resultado='ok';\n";
$sql.="end\n";




ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[crear_proveedor]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[crear_proveedor]\n";




ejecutarsql($sql,$filas,$otro);
$sql="";

$sql.="CREATE procedure [dbo].[crear_proveedor] \n";
$sql.="@Country nvarchar(30)='%'\n";
$sql.="as\n";
$sql.="begin\n";
$sql.="    select id from pf_proveedor;\n";
$sql.="end\n";

ejecutarsql($sql,$filas,$otro);
$sql="";

$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[crear_tarja]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[crear_tarja]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE PROCEDURE [dbo].[crear_tarja]\n";
$sql.="	@codi_tarjeta  varchar(25),\n";
$sql.="	@flag  nchar(1),\n";
$sql.="	@fecha_creacion  int,\n";
$sql.="	@tarja_anterior varchar(5),\n";
$sql.="	@id_especie smallint,\n";
$sql.="	@num_cajas smallint,\n";
$sql.="	@id_envase smallint,\n";
$sql.="	@id_tipo smallint,\n";
$sql.="	@proveedor varchar(25),\n";
$sql.="    @resultado nvarchar(200) OUTPUT	\n";
$sql.="AS\n";
$sql.="	\n";
$sql.="BEGIN\n";
$sql.="	declare @tmp as varchar(25);\n";
$sql.="	-- SET NOCOUNT ON added to prevent extra result sets from\n";
$sql.="	-- interfering with SELECT statements.\n";
$sql.="	SET NOCOUNT ON;\n";
$sql.="    set @tmp='';\n";
$sql.="	select @tmp=codigo_tarjeta from pf_tarja where codigo_tarjeta=@codi_tarjeta;\n";
$sql.="	IF @@ROWCOUNT = 0\n";
$sql.="		INSERT INTO pf_tarja\n";
$sql.="			(codigo_tarjeta\n";
$sql.="			,flag\n";
$sql.="			,fecha_creacion\n";
$sql.="			,tarja_anterior\n";
$sql.="			,id_especie\n";
$sql.="			,num_cajas\n";
$sql.="			,id_envase\n";
$sql.="			,id_tipo\n";
$sql.="			,proveedor)\n";
$sql.="		 VALUES\n";
$sql.="				(@codi_tarjeta\n";
$sql.="				,@flag\n";
$sql.="				,@fecha_creacion\n";
$sql.="				,@tarja_anterior\n";
$sql.="				,@id_especie\n";
$sql.="				,@num_cajas\n";
$sql.="				,@id_envase\n";
$sql.="				,@id_tipo\n";
$sql.="				,@proveedor);\n";
$sql.="	\n";
$sql.="	\n";
$sql.="END\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[crear_tarja_inicial]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[crear_tarja_inicial]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE PROCEDURE [dbo].[crear_tarja_inicial]\n";
$sql.="	@codi_tarjeta  varchar(25),\n";
$sql.="	@fecha_creacion  int,\n";
$sql.="	@id_envase smallint,\n";
$sql.="	@etiqueta varchar(200),\n";
$sql.="	@kg decimal(8,2),\n";
$sql.="	@num_cajas smallint,\n";
$sql.="	@calibre smallint,\n";
$sql.="    @resultado nvarchar(200) OUTPUT	\n";
$sql.="AS\n";
$sql.="	\n";
$sql.="BEGIN\n";
$sql.="	declare @tmp as varchar(25);\n";
$sql.="	-- SET NOCOUNT ON added to prevent extra result sets from\n";
$sql.="	-- interfering with SELECT statements.\n";
$sql.="	SET NOCOUNT ON;\n";
$sql.="    set @tmp='';\n";
$sql.="	select @tmp=codigo_tarjeta from pf_tarja where codigo_tarjeta=@codi_tarjeta;\n";
$sql.="	IF @@ROWCOUNT = 0\n";
$sql.="		INSERT INTO pf_tarja\n";
$sql.="			(codigo_tarjeta\n";
$sql.="			,flag\n";
$sql.="			,fecha_creacion\n";
$sql.="			,tarja_anterior\n";
$sql.="			,id_especie\n";
$sql.="			,id_envase\n";
$sql.="			,id_tipo\n";
$sql.="			,proveedor\n";
$sql.="			,etiqueta\n";
$sql.="			,kg\n";
$sql.="			,num_cajas\n";
$sql.="			,calibre)\n";
$sql.="		 VALUES\n";
$sql.="				(@codi_tarjeta\n";
$sql.="				,'P'\n";
$sql.="				,@fecha_creacion\n";
$sql.="				,null\n";
$sql.="				,null\n";
$sql.="				,@id_envase\n";
$sql.="				,null\n";
$sql.="				,null\n";
$sql.="				,@etiqueta\n";
$sql.="				,@kg\n";
$sql.="				,@num_cajas\n";
$sql.="				,@calibre);\n";
$sql.="	else\n";
$sql.="	 update pf_tarja\n";
$sql.="			set flag='P'\n";
$sql.="			,fecha_creacion=@fecha_creacion\n";
$sql.="			,tarja_anterior=null\n";
$sql.="			,id_especie=null\n";
$sql.="			,id_envase=@id_envase\n";
$sql.="			,id_tipo=null\n";
$sql.="			,proveedor=null\n";
$sql.="			,etiqueta=@etiqueta\n";
$sql.="			,kg=@kg\n";
$sql.="			,num_cajas=@num_cajas\n";
$sql.="			,calibre=@calibre\n";
$sql.="		where codigo_tarjeta=@codi_tarjeta;\n";
$sql.="	\n";
$sql.="	\n";
$sql.="END\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[crear_tarjaxproceso]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[crear_tarjaxproceso]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[crear_tarjaxproceso]\n";
$sql.="	@id_proceso int,\n";
$sql.="	@id_tarja varchar(20),\n";
$sql.="	@fecha  int,\n";
$sql.="	@con_sensor char(1),\n";
$sql.="    @resultado nvarchar(200) OUTPUT	\n";
$sql.="AS\n";
$sql.="IF NOT EXISTS(select * from pf_tarjaxproceso where id_proceso=id_proceso and id_tarja=@id_tarja )\n";
$sql.="BEGIN\n";
$sql.="	-- SET NOCOUNT ON added to prevent extra result sets from\n";
$sql.="	-- interfering with SELECT statements.\n";
$sql.="	SET NOCOUNT ON;\n";
$sql.="	INSERT into pf_tarjaxproceso\n";
$sql.="		(id_proceso\n";
$sql.="		,id_tarja\n";
$sql.="		,fecha\n";
$sql.="		,con_sensor)\n";
$sql.="     VALUES\n";
$sql.="			(@id_proceso\n";
$sql.="			,@id_tarja\n";
$sql.="			,@fecha\n";
$sql.="			,@con_sensor);\n";
$sql.="	\n";
$sql.="	\n";
$sql.="END\n";
$sql.="else\n";
$sql.="begin\n";
$sql.="	-- SET NOCOUNT ON added to prevent extra result sets from\n";
$sql.="	-- interfering with SELECT statements.\n";
$sql.="	SET NOCOUNT ON;\n";
$sql.="   update pf_tarjaxproceso\n";
$sql.="   SET\n";
$sql.="      id_proceso=@id_proceso,\n";
$sql.="	  fecha=@fecha\n";
$sql.="where id_tarja = @id_tarja;\n";
$sql.="	\n";
$sql.="end\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[modificar_camara]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[modificar_camara]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[modificar_camara]\n";
$sql.="		@id_camara smallint,\n";
$sql.="		@x int,\n";
$sql.="		@y int,\n";
$sql.="		@w int,\n";
$sql.="		@h int,\n";
$sql.="       @resultado nvarchar(200) OUTPUT\n";
$sql.="as\n";
$sql.="begin\n";
$sql.="UPDATE pf_camara\n";
$sql.="   SET x = @x\n";
$sql.="	,y = @y\n";
$sql.="	,w = @w\n";
$sql.="	,h = @h\n";
$sql.=" WHERE id_camara=@id_camara;\n";
$sql.="end\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[modificar_proceso]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[modificar_proceso]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[modificar_proceso]\n";
$sql.="       @in_proceso smallint,\n";
$sql.="       @in_estado char(1),\n";
$sql.="       @in_frecuencia smallint,\n";
$sql.="       @in_creador_final varchar(100),\n";
$sql.="       @in_condicion_final varchar(50),\n";
$sql.="       @in_pallets int,\n";
$sql.="       @in_puchos int,\n";
$sql.="       @in_bins int,\n";
$sql.="       @resultado nvarchar(200) OUTPUT\n";
$sql.="as\n";
$sql.="begin\n";
$sql.="    declare @num_proceso as smallint;\n";
$sql.="    declare @num_giro as smallint;\n";
$sql.="    declare @var_camara as smallint;\n";
$sql.="    DECLARE @FechaInicial datetime;\n";
$sql.="	declare @FechaActual as int;\n";
$sql.="    declare @fechatmp as int;\n";
$sql.="	declare @deltafecha as int;\n";
$sql.="    set @fechainicial=cast('01/01/2005 00:00:00' as datetime)\n";
$sql.="	set @deltafecha=4-datediff(hour,getdate(),GETUTCDATE()); -- 1 = para verano, 0 para invierno.\n";
$sql.="    set @fechatmp=(datediff(minute,@fechainicial,CURRENT_TIMESTAMP))-@deltafecha*60; -- fecha actual formato epoch\n";
$sql.="	set @var_camara=-1;\n";
$sql.="	set @FechaActual=(datediff(minute,@fechainicial,CURRENT_TIMESTAMP))-@deltafecha*60; -- fecha actual formato epoch\n";
$sql.="-- evitamos actualizaciones durante 10 minutos\n";
$sql.="begin transaction\n";
$sql.="	update dbo.pf_proceso set fecha_ultcam=(@FechaActual+10) where  id_proceso=@in_proceso; --evitamos duplicados otra vez.\n";
$sql.="commit	\n";
$sql.="--obtenemos el numero de la camara\n";
$sql.="     SELECT @var_camara=Id_camara\n";
$sql.="     FROM Pf_proceso\n";
$sql.="     WHERE Id_proceso = @in_proceso;\n";
$sql.="-- voltear. (H hold ,  c = continuar).\n";
$sql.="if (@in_estado='H')\n";
$sql.="begin\n";
$sql.="     SELECT @num_giro=num_giros+1\n";
$sql.="     FROM Pf_proceso\n";
$sql.="     WHERE Id_proceso = @in_proceso;\n";
$sql.="	 \n";
$sql.="     if (@num_giro=1)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = @in_estado,\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				\n";
$sql.="                 fecha_inicio_giro1=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso en estado pendiente #1',@in_creador_final,2;\n";
$sql.="		end;\n";
$sql.="     if (@num_giro=2)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = @in_estado,\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_inicio_giro2=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso en estado pendiente #2',@in_creador_final,4;\n";
$sql.="		end;				 \n";
$sql.="     if (@num_giro=3)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = @in_estado,\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_inicio_giro3=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso en estado pendiente #3',@in_creador_final,6;\n";
$sql.="		end;				 \n";

$sql.="     if (@num_giro=4)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = @in_estado,\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_inicio_giro4=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso en estado pendiente #4',@in_creador_final,8;\n";
$sql.="		end;				 \n";


$sql.="     if (@num_giro=5)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = @in_estado,\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_inicio_giro5=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso en estado pendiente #5',@in_creador_final,10;\n";
$sql.="		end;				 \n";


$sql.="     UPDATE Pf_camara\n";
$sql.="     SET Estado_actual = 'H'  WHERE Id_camara = @var_camara;\n";
$sql.="end;\n";
$sql.="if (@in_estado='C')\n";
$sql.="begin	\n";
$sql.="     SELECT @num_giro=num_giros\n";
$sql.="     FROM Pf_proceso\n";
$sql.="     WHERE Id_proceso = @in_proceso;\n";
$sql.="     if (@num_giro<=1)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = 'P',\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_fin_giro1=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso continuado #1',@in_creador_final,3;\n";
$sql.="		end;\n";
$sql.="     if (@num_giro=2)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = 'P',\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_fin_giro2=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso continuado #2',@in_creador_final,5;\n";
$sql.="			 \n";
$sql.="		end;\n";
$sql.="     if (@num_giro=3)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = 'P',\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_fin_giro3=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso continuado #1',@in_creador_final,7;			 \n";
$sql.="		end;\n";


$sql.="     if (@num_giro=4)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = 'P',\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_fin_giro4=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso continuado #1',@in_creador_final,9;			 \n";
$sql.="		end;\n";


$sql.="     if (@num_giro=5)\n";
$sql.="		begin\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET Estado = 'P',\n";
$sql.="				 frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 fecha_fin_giro5=@fechatmp,\n";
$sql.="                 num_giros=@num_giro,\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso continuado #1',@in_creador_final,11;			 \n";
$sql.="		end;\n";



$sql.="     UPDATE Pf_camara\n";
$sql.="     SET Estado_actual = 'P'  WHERE Id_camara = @var_camara;\n";
$sql.="end;\n";
$sql.="--En proceso (modificar)\n";
$sql.="if (@in_estado='P')\n";
$sql.="begin	\n";
$sql.="          UPDATE Pf_proceso\n";
$sql.="                 SET frecuencia=@in_frecuencia,\n";
$sql.="                 creador_final=@in_creador_final,\n";
$sql.="                 condicion_final=@in_condicion_final,\n";
$sql.="                 pallets=@in_pallets,\n";
$sql.="                 puchos=@in_puchos,\n";
$sql.="                 bins=@in_bins,				 				\n";
$sql.="                 Fecha_ultcam = @fechatmp\n";
$sql.="                 WHERE Id_proceso = @in_proceso;\n";
$sql.="			exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso modificado',@in_creador_final,3;\n";
$sql.="	\n";
$sql.="     UPDATE Pf_camara\n";
$sql.="     SET Estado_actual = 'P'  WHERE Id_camara = @var_camara;\n";
$sql.="end;\n";
$sql.="-- finalizar\n";
$sql.="if (@in_estado='F')\n";
$sql.="begin\n";
$sql.="	 exec dbo.crear_log @var_camara,@in_proceso,@fechatmp,'Proceso Finalizado',@in_creador_final,10;\n";
$sql.="	 \n";
$sql.="     UPDATE Pf_proceso\n";
$sql.="     SET Estado = @in_estado,\n";
$sql.="		 frecuencia=@in_frecuencia,\n";
$sql.="		 creador_final=@in_creador_final,\n";
$sql.="		 condicion_final=@in_condicion_final,\n";
$sql.="		 pallets=@in_pallets,\n";
$sql.="		 puchos=@in_puchos,\n";
$sql.="		 bins=@in_bins,				 	\n";
$sql.="         Fecha_ultcam = @fechatmp,\n";
$sql.="         Fecha_fin = @fechatmp\n";
$sql.="     WHERE Id_proceso = @in_proceso;\n";
$sql.="     UPDATE Pf_camara\n";
$sql.="     SET Estado_actual = 'V',\n";
$sql.="         Proceso_actual = 0\n";
$sql.="     WHERE Id_camara = @var_camara;\n";
$sql.="end;\n";
$sql.="--grabamos una linea de tiempo en el historial	\n";
$sql.="	delete from dbo.pf_historico_proceso where proceso=@in_proceso and fecha=@fechaactual; -- evitamos duplicados.\n";
$sql.="	INSERT INTO dbo.pf_historico_proceso(fecha,sensor,sensor_tipo,camara,proceso,valor)\n";
$sql.="	select @FechaActual,d.LecturaDirModulo,d.LecturaDirtipo,a.id_camara,@in_proceso,CASE a.id_status when 'V' Then d.lecturavalor Else -666 End as valor\n";
$sql.="		from dbo.pf_sensorxcamara a,dbo.pf_camara b,dbo.MOTORLECTURAS d\n";
$sql.="			where d.LecturaDirtipo=a.lecturadirtipo \n";
$sql.="			and d.LecturaDirModulo=a.LecturaDirModulo\n";
$sql.="			and a.id_camara=b.id_camara\n";
$sql.="			and a.id_camara=@var_camara\n";
$sql.="			order by d.lecturadirmodulo,d.lecturadirtipo;\n";
$sql.="--marcamos el ultimo cambio como la fecha actual y terminamos.\n";
$sql.="	update dbo.pf_proceso set fecha_ultcam=@FechaActual where  id_proceso=@in_proceso; --evitamos duplicados otra vez.\n";
$sql.="	\n";
$sql.="	\n";
$sql.="end;\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Modificar_productor]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[Modificar_productor]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[Modificar_productor]\n";
$sql.="@id int,\n";
$sql.="@nombre nvarchar(200),\n";
$sql.=" @resultado nvarchar(200) OUTPUT\n";
$sql.="as\n";
$sql.="set XACT_ABORT ON\n";
$sql.="begin try\n";
$sql.="    update pf_productor set nombre_productor=@nombre where id_productor=@id;\n";
$sql.="	set @resultado='ok';\n";
$sql.="end try\n";
$sql.="begin catch\n";
$sql.="	rollback\n";
$sql.="	set @resultado='no';\n";
$sql.="end catch\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Modificar_window]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)\n";
$sql.="drop procedure [dbo].[Modificar_window]\n";

ejecutarsql($sql,$filas,$otro);
$sql="";


$sql.="CREATE procedure [dbo].[Modificar_window]\n";
$sql.="@id_camara smallint,\n";
$sql.="@x int,\n";
$sql.="@y int,\n";
$sql.="@w int,\n";
$sql.="@h int,\n";
$sql.="@status int,\n";
$sql.="@pantalla smallint,\n";
$sql.="@id_usuario smallint,\n";
$sql.="@resultado nvarchar(200) OUTPUT\n";
$sql.="as\n";
$sql.="set XACT_ABORT ON\n";
$sql.="begin try\n";
$sql.="set @resultado='calculando';\n";
$sql.="if not exists (\n";
$sql.="               select *\n";
$sql.="               from pf_window\n";
$sql.="               where id_camara = @id_camara and\n";
$sql.="                     pantalla = @pantalla and\n";
$sql.="                     id_usuario = @id_usuario)\n";
$sql.="begin\n";
$sql.="    insert into pf_window(x, y, w, h, status, id_camara, pantalla, id_usuario)\n";
$sql.="    values (@x, @y, @w, @h, @status, @id_camara, @pantalla, @id_usuario);\n";
$sql.="end\n";
$sql.="else\n";
$sql.="begin\n";
$sql.="    update pf_window\n";
$sql.="    set x = @x,\n";
$sql.="        y = @y,\n";
$sql.="        w = @w,\n";
$sql.="        h = @h,\n";
$sql.="        status = @status\n";
$sql.="    where id_camara = @id_camara and\n";
$sql.="          pantalla = @pantalla and\n";
$sql.="          id_usuario = @id_usuario;\n";
$sql.="end\n";
$sql.="    set @resultado='ok';\n";
$sql.="end try\n";
$sql.="begin catch\n";
$sql.="    rollback\n";
$sql.="    set @resultado='no';\n";
$sql.="end catch\n";
$filas="";
$otro="";
ejecutarsql($sql,$filas,$otro);


$sql= "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fechamotor]') and xtype in (N'FN', N'IF', N'TF'))\n";
$sql.= "drop function [dbo].[fechamotor]\n";

ejecutarsql($sql,$filas,$otro);

$sql= "create FUNCTION [dbo].[fechamotor] \n";
$sql.= "(\n";
$sql.= "	-- Add the parameters for the function here\n";
$sql.= ")\n";
$sql.= "RETURNS datetime\n";
$sql.= "AS\n";
$sql.= "BEGIN\n";
$sql.= "	-- 2009 jan.\n";
$sql.= "	DECLARE @Result datetime\n";
$sql.= "	declare @deltafecha as int;\n";
$sql.= "	set @deltafecha=4-datediff(hour,getdate(),GETUTCDATE()); -- 1 = para verano, 0 para invierno.\n";
$sql.= "	-- Add the T-SQL statements to compute the return value here\n";
$sql.= "    select  @Result = convert(datetime,str(UltimaFechaDia,2)+'/'+str(UltimaFechaMes,2)+'/'+str(UltimaFechaAno,4)+' '+str(UltimaFechaHor)+':'+str(UltimaFechaMin)+':'+str(UltimaFechaSeg),103)\n";
$sql.= "		from dbo.MOTORULTIMAFECHA;\n";
$sql.= "	set @result=dateadd(hour,-@deltafecha,@result);\n";
$sql.= "	-- Return the result of the function\n";
$sql.= "	RETURN @Result\n";
$sql.= "END\n";

ejecutarsql($sql,$filas,$otro);

$sql= "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fechamotor2]') and xtype in (N'FN', N'IF', N'TF'))\n";
$sql.= "drop function [dbo].[fechamotor2]\n";

ejecutarsql($sql,$filas,$otro);
$sql= "create FUNCTION [dbo].[fechamotor2] \n";
$sql.= "(\n";
$sql.= ")\n";
$sql.= "RETURNS int\n";
$sql.= "AS\n";
$sql.= "BEGIN\n";
$sql.= "	-- obtiene la fecha en formato EPOCH que son los minutos que han pasado desde 01/01/2005 \n";
$sql.= "	---int 2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)    (4 bytes)\n";
$sql.= "	---minutos en el aņo : 525600  minutos divido por 10 52560\n";
$sql.= "	--- por lo tanto aņos que aguanta el epoch :4.085 aņos\n";
$sql.= "	-- Declare the return variable here\n";
$sql.= "	DECLARE @Result int\n";
$sql.= "	select @result=fecha_ultcam \n";
$sql.= "		from dbo.HISTORICOULTIMAFECHA;\n";
$sql.= "	RETURN @result\n";
$sql.= "END\n";

ejecutarsql($sql,$filas,$otro);



?>