
--CREACION DE TIPO
if not exists (select * from doc_tipodocumento where tipoDocumento_codigo ='doc_documento_gasto') 
begin 
insert into doc_tipodocumento([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[tipoDocumento]
           ,[tipoDocumento_codigo]
           ,[esSalida]
           ,[mostrarBodega]
           ,[mostrarCentroCosto]
           ,[mostrarIncoterm]
           ,[puedeSerMayor]
           ,[puedeSerMenor]
           ,[esUrgente])
select [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'Gasto'
           ,'doc_documento_gasto'
           ,[esSalida]
           ,[mostrarBodega]
           ,[mostrarCentroCosto]
           ,[mostrarIncoterm]
           ,[puedeSerMayor]
           ,[puedeSerMenor]
           ,[esUrgente]
from doc_tipoDocumento where tipoDocumento_codigo='doc_documento_alquiler'
end
--CREACION DE SUBTIPOS
declare @idTipoGasto as int
select @idTipoGasto=id from doc_tipoDocumento where tipoDocumento_codigo='doc_documento_gasto'
if not exists(select * from doc_subtipoDocumento where prefijo='ADG'  and id_tipoDocumento=@idTipoGasto)
begin
insert into doc_subtipoDocumento([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[subtipoDocumento]
           ,[subtipoDocumento_codigo]
           ,[prefijo]
           ,[consecutivo]
           ,[id_tipoDocumento]
           ,[programarPlaneadas]
           ,[cargarSolicitante]
           ,[verCentroCosto]
           ,[verIncoterm]
           ,[valUrgente]
           ,[bloquearDespacho]
           ,[cerrarSol]
           ,[ejecutaDevolucion]
           ,[tipoCobro])

select [uid]
            ,'01'
           ,1
           ,1
           ,GETDATE ()
           ,GETDATE()
           ,1
           ,'Adelanto de Gastos'
           ,'ADG'
           ,'ADG'
           ,1
           ,@idTipoGasto
           ,[programarPlaneadas]
           ,[cargarSolicitante]
           ,[verCentroCosto]
           ,[verIncoterm]
           ,[valUrgente]
           ,[bloquearDespacho]
           ,0
           ,[ejecutaDevolucion]
           ,[tipoCobro]
		   from doc_subtipoDocumento where id=1
end

if not exists(select * from doc_subtipoDocumento where prefijo='REG' and id_tipoDocumento=@idTipoGasto )
begin
insert into doc_subtipoDocumento([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[subtipoDocumento]
           ,[subtipoDocumento_codigo]
           ,[prefijo]
           ,[consecutivo]
           ,[id_tipoDocumento]
           ,[programarPlaneadas]
           ,[cargarSolicitante]
           ,[verCentroCosto]
           ,[verIncoterm]
           ,[valUrgente]
           ,[bloquearDespacho]
           ,[cerrarSol]
           ,[ejecutaDevolucion]
           ,[tipoCobro])

select [uid]
            ,'01'
           ,1
           ,1
           ,GETDATE ()
           ,GETDATE()
           ,1
           ,'Registro de Gastos'
           ,'REG'
           ,'REG'
           ,1
           ,@idTipoGasto
           ,[programarPlaneadas]
           ,[cargarSolicitante]
           ,[verCentroCosto]
           ,[verIncoterm]
           ,[valUrgente]
           ,[bloquearDespacho]
           ,0
           ,[ejecutaDevolucion]
           ,[tipoCobro]
		   from doc_subtipoDocumento where id=1
end
--CREACION DE ESTADOS

if not exists(select * from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='NUE' and  id_tipoDocumento=@idTipoGasto )
begin

INSERT INTO [dbo].[doc_estadoTipoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[estadoTipoDocumento]
           ,[estadoTipoDocumento_codigo]
           ,[afectaIndicador]
           ,[editaDocumento]
           ,[orden]
           ,[puedeRegresar]
           ,[color]
           ,[afectaInventario]
           ,[id_tipoDocumento]
           ,[descripcion]
           ,[observacionesObligatorio]
           ,[motivoObligatorio])
SELECT [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'Nueva'
           ,'NUE'
           ,0
           ,1
           ,1
           ,0
           ,'FFFFFF'
           ,0
           ,@idTipoGasto
           ,'Estado inicial del documento de gasto'
           ,0
           ,0
FROM [dbo].[doc_estadoTipoDocumento]
WHERE id=1

end

if not exists(select * from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='APR' and  id_tipoDocumento=@idTipoGasto )
begin

INSERT INTO [dbo].[doc_estadoTipoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[estadoTipoDocumento]
           ,[estadoTipoDocumento_codigo]
           ,[afectaIndicador]
           ,[editaDocumento]
           ,[orden]
           ,[puedeRegresar]
           ,[color]
           ,[afectaInventario]
           ,[id_tipoDocumento]
           ,[descripcion]
           ,[observacionesObligatorio]
           ,[motivoObligatorio])
SELECT [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'Aprobada'
           ,'APR'
           ,0
           ,1
           ,1
           ,0
           ,'FFFFFF'
           ,0
           ,@idTipoGasto
           ,'Estado aprobado  del documento de gasto'
           ,0
           ,0
FROM [dbo].[doc_estadoTipoDocumento]
WHERE id=1

end

if not exists(select * from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='CER' and  id_tipoDocumento=@idTipoGasto )
begin

INSERT INTO [dbo].[doc_estadoTipoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[estadoTipoDocumento]
           ,[estadoTipoDocumento_codigo]
           ,[afectaIndicador]
           ,[editaDocumento]
           ,[orden]
           ,[puedeRegresar]
           ,[color]
           ,[afectaInventario]
           ,[id_tipoDocumento]
           ,[descripcion]
           ,[observacionesObligatorio]
           ,[motivoObligatorio])
SELECT [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'Legalizada'
           ,'CER'
           ,0
           ,1
           ,1
           ,0
           ,'FFFFFF'
           ,0
           ,@idTipoGasto
           ,'Estado legalizada  del documento de gasto'
           ,0
           ,0
FROM [dbo].[doc_estadoTipoDocumento]
WHERE id=1

end

if not exists(select * from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='CAN' and  id_tipoDocumento=@idTipoGasto )
begin

INSERT INTO [dbo].[doc_estadoTipoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[estadoTipoDocumento]
           ,[estadoTipoDocumento_codigo]
           ,[afectaIndicador]
           ,[editaDocumento]
           ,[orden]
           ,[puedeRegresar]
           ,[color]
           ,[afectaInventario]
           ,[id_tipoDocumento]
           ,[descripcion]
           ,[observacionesObligatorio]
           ,[motivoObligatorio])
SELECT [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'Deslegalizada'
           ,'CAN'
           ,0
           ,1
           ,1
           ,0
           ,'FFFFFF'
           ,0
           ,@idTipoGasto
           ,'Estado deslegalizada  del documento de gasto'
           ,0
           ,0
FROM [dbo].[doc_estadoTipoDocumento]
WHERE id=1

end


--CREACION DEL FLUJO DE ESTADOS
DECLARE @nuevo as int
DECLARE @aprobada as int
DECLARE @legalizada as int
DECLARE @deslegalizada as int
select top 1  @nuevo=1 from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='NUE' and  id_tipoDocumento=@idTipoGasto 
select top 1  @aprobada=1 from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='APR' and  id_tipoDocumento=@idTipoGasto 
select top 1  @legalizada=1 from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='CER' and  id_tipoDocumento=@idTipoGasto 
select top 1  @deslegalizada=1 from doc_estadoTipoDocumento where estadoTipoDocumento_codigo='CAN' and  id_tipoDocumento=@idTipoGasto 


--NUE->APR
if not exists( select * from [dbo].[doc_estadoTipoDocumento_subtipoDocumento] 
inner join doc_subtipoDocumento on [dbo].[doc_estadoTipoDocumento_subtipoDocumento].id_subtipoDocumento = doc_subtipoDocumento.id and doc_subtipoDocumento .id_tipoDocumento =@idTipoGasto
where [dbo].[doc_estadoTipoDocumento_subtipoDocumento] .id_estadoTipoDocumento =@nuevo and [dbo].[doc_estadoTipoDocumento_subtipoDocumento] .id_estadoTipoDocumento_destino =@aprobada 
)
begin

INSERT INTO [dbo].[doc_estadoTipoDocumento_subtipoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[estadoTipoDocumento_subtipoDocumento]
           ,[id_estadoTipoDocumento]
           ,[id_subtipoDocumento]
           ,[id_estadoTipoDocumento_destino]
           ,[sp_ejecucionfinal])
SELECT [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'NUE->APR'
           ,@nuevo
           ,id
           ,@aprobada
           ,'' 
		   FROM doc_subtipoDocumento where id_tipoDocumento =@idTipoGasto
end

--APR->CER
if not exists( select * from [dbo].[doc_estadoTipoDocumento_subtipoDocumento] 
inner join doc_subtipoDocumento on [dbo].[doc_estadoTipoDocumento_subtipoDocumento].id_subtipoDocumento = doc_subtipoDocumento.id and doc_subtipoDocumento .id_tipoDocumento =@idTipoGasto
where [dbo].[doc_estadoTipoDocumento_subtipoDocumento] .id_estadoTipoDocumento =@aprobada and [dbo].[doc_estadoTipoDocumento_subtipoDocumento] .id_estadoTipoDocumento_destino =@legalizada 
)
begin

INSERT INTO [dbo].[doc_estadoTipoDocumento_subtipoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[estadoTipoDocumento_subtipoDocumento]
           ,[id_estadoTipoDocumento]
           ,[id_subtipoDocumento]
           ,[id_estadoTipoDocumento_destino]
           ,[sp_ejecucionfinal])
SELECT [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'APR->CER'
           ,@aprobada
           ,id
           ,@legalizada
           ,'' 
		   FROM doc_subtipoDocumento where id_tipoDocumento =@idTipoGasto
end

--CER->CAN
if not exists( select * from [dbo].[doc_estadoTipoDocumento_subtipoDocumento] 
inner join doc_subtipoDocumento on [dbo].[doc_estadoTipoDocumento_subtipoDocumento].id_subtipoDocumento = doc_subtipoDocumento.id and doc_subtipoDocumento .id_tipoDocumento =@idTipoGasto
where [dbo].[doc_estadoTipoDocumento_subtipoDocumento] .id_estadoTipoDocumento =@legalizada and [dbo].[doc_estadoTipoDocumento_subtipoDocumento] .id_estadoTipoDocumento_destino =@deslegalizada 
)
begin

INSERT INTO [dbo].[doc_estadoTipoDocumento_subtipoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[estadoTipoDocumento_subtipoDocumento]
           ,[id_estadoTipoDocumento]
           ,[id_subtipoDocumento]
           ,[id_estadoTipoDocumento_destino]
           ,[sp_ejecucionfinal])
SELECT [uid]
           ,'01'
           ,1
           ,1
           ,GETDATE()
           ,GETDATE()
           ,1
           ,'CER->CAN'
           ,@legalizada
           ,id
           ,@deslegalizada
           ,'' 
		   FROM doc_subtipoDocumento where id_tipoDocumento =@idTipoGasto
end

--GENERACION FLUJOS DE DOCUMENTOS



INSERT INTO [dbo].[doc_flujoDocumento]
           ([uid]
           ,[eid]
           ,[id_usuario_modifico]
           ,[id_usuario_creo]
           ,[fechaModificacion]
           ,[fechaCreacion]
           ,[active]
           ,[flujoDocumento]
           ,[flujoDocumento_codigo]
           ,[restrictivo]
           ,[id_subtipoDocumento_origen]
           ,[id_subtipoDocumento_destino]
           ,[id_estadoTipoDocumento_origen]
           ,[id_estadoTipoDocumento_resultado]
           ,[replicarItems]
           ,[replicarAtributos]
           ,[replicarItemsActividades]
           ,[replicarComentario])
select 
			gasto.[uid]
           ,gasto.[eid]
           ,1
           ,1
           ,getdate()
           ,getdate()
           ,1
           ,'Generar '+ gasto.prefijo +' desde '+ ot.prefijo flujodocumento
           ,'genGAS'
           ,0
           ,ot.id
           ,gasto.id
           ,estadoOt.id 
           ,estadoGasto.id
           ,0
           ,0
           ,0
           ,0
 from doc_subtipoDocumento ot
inner join doc_estadoTipoDocumento estadoOt on  estadoOt.id_tipoDocumento = ot.id_tipoDocumento  
											and estadoOt.estadoTipoDocumento_codigo='CUR'and ot.id_tipoDocumento =2 
,doc_subtipoDocumento gasto
inner join doc_tipodocumento tipogasto on tipogasto.tipoDocumento_codigo ='doc_documento_gasto' 
												and gasto.id_tipoDocumento =tipogasto.id
inner join  doc_estadoTipoDocumento estadoGasto on estadoGasto.id_tipoDocumento= tipogasto.id and estadoGasto.estadoTipoDocumento_codigo='NUE'
where not exists (select * from doc_flujoDocumento 
where id_subtipoDocumento_origen =ot.id  and id_subtipoDocumento_destino=gasto.id and  id_estadoTipoDocumento_origen =estadoOt.id and id_estadoTipoDocumento_resultado =estadoGasto.id )

