CREATE OR REPLACE FUNCTION public.sp_crud_valoriza_addms(
    codigo_v integer,
    estab_v integer,
    modulo integer,
    smodulo integer)
  RETURNS character varying AS
$BODY$
declare
	idp integer;
	_id_valoriza integer;
	
begin

	if codigo_v > 0 Then

		select count(val_codigo) + 1 into _id_valoriza from valorizaciones where val_estab = estab_v;
						
		Insert Into valorizaciones (val_codigo, val_estab, val_fecha, val_tipo, val_persona, 
					       val_pac_nombre, val_subtotal, val_subtotal_plan, val_impuesto, 
					       val_total, val_moneda_id, val_moneda, val_fact_impuesto, val_asume, 
					       val_emp_asume, val_descuento, val_observaciones, val_ubicacion, 
					       val_plan, val_aten_estab, val_aten_codigo, val_liquidado, val_facturado,  
					       val_estado_atencion, val_cod_contable, val_cancelado, val_anulado, val_costo, val_margen, 
					       val_costo_plan, val_margen_plan, val_eliminado) 
			Select _id_valoriza, val_estab, val_fecha, val_tipo, val_persona, 
					       val_pac_nombre, val_subtotal, val_subtotal_plan, val_impuesto, 
					       val_total, val_moneda_id, val_moneda, val_fact_impuesto, val_asume, 
					       val_emp_asume, val_descuento, val_observaciones, val_ubicacion, 
					       val_plan, val_aten_estab, val_aten_codigo, val_liquidado, val_facturado,  
					       val_estado_atencion, val_cod_contable, val_cancelado, val_anulado, val_costo, val_margen, 
					       val_costo_plan, val_margen_plan, val_eliminado
			From valorizaciones 
			Where val_codigo = codigo_v and val_estab = estab_v;


		Insert into val_atencion_modulos(vm_vnumero, vm_vestab, vm_modulo, vm_plan, vm_modulod, vm_descripcion, 
					       vm_costo, vm_orden, vm_estado, vm_eliminado,  vm_opcional, 
					       vm_costo_plan, vm_precio, vm_precio_plan, vm_margen, vm_margen_plan)
			select _id_valoriza, vm_vestab, vm_modulo, vm_plan, vm_modulod, vm_descripcion, 
						       vm_costo, vm_orden, vm_estado, vm_eliminado,  vm_opcional, 
						       vm_costo_plan, vm_precio, vm_precio_plan, vm_margen, vm_margen_plan
			From val_atencion_modulos 
			Where vm_vnumero = codigo_v and vm_vestab = estab_v and vm_modulo = modulo;

		insert into val_atencion_smodulos(vsm_vnumero, vsm_vestab, vsm_modulo, vsm_smodulo, vsm_smodulod, 
					       vsm_descripcion, vsm_costo, vsm_orden, vsm_estado, vsm_eliminado, 
					       vsm_opcional, vsm_costo_plan, vsm_precio, vsm_precio_plan, 
					       vsm_margen, vsm_margen_plan)
			select _id_valoriza, vsm_vestab, vsm_modulo, vsm_smodulo, vsm_smodulod, 
						       vsm_descripcion, vsm_costo, vsm_orden, vsm_estado, vsm_eliminado, 
						       vsm_opcional, vsm_costo_plan, vsm_precio, vsm_precio_plan, 
						       vsm_margen, vsm_margen_plan
			From val_atencion_smodulos
			Where vsm_vnumero = codigo_v and vsm_vestab = estab_v and vsm_modulo = modulo and vsm_smodulo = smodulo;

					
		idp:=_id_valoriza;
	Else
		idp:=0;
	End if;

--select sp_crud_valoriza_addms (1,1,4,1);
/*
delete from ind_atenciones;
delete from ind_atencion_modulos;
delete from ind_atencion_smodulos;
delete from valorizaciones;
delete from val_atencion_modulos;
delete from val_atencion_smodulos;

	
TRUNCATE TABLE ind_atenciones RESTART IDENTITY;
TRUNCATE TABLE ind_atencion_modulos RESTART IDENTITY;
TRUNCATE TABLE ind_atencion_smodulos RESTART IDENTITY;

TRUNCATE TABLE valorizaciones RESTART IDENTITY;
TRUNCATE TABLE val_atencion_modulos RESTART IDENTITY;
TRUNCATE TABLE val_atencion_smodulos RESTART IDENTITY;
*/
				
	return idp;
	EXCEPTION
	WHEN OTHERS THEN
        idp:=-1;
	return idp;

end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
