
CREATE OR REPLACE FUNCTION sp_crud_estacionamiento_vehiculo(accion character varying, id_estacionamiento_empresa integer,p_fecha_inicio character varying, p_fecha_vencimiento character varying, p_precio character varying, p_id_estacionamiento character varying, p_vehiculo character varying[])
  RETURNS character varying AS
$BODY$
declare
	p_id integer;
	p_vehiculo_id integer;
	p_flag_afiliacion varchar;
begin
	case accion
		when 'i' then

			if id_estacionamiento_empresa > 0 then

				update estacionamiento_empresas set flag_deuda='0' where estacionamiento_id=p_id_estacionamiento::int8;
				
				update estacionamiento_empresas set
				flag_deuda='1',
				fecha_inicio=(case when p_fecha_inicio!='' then p_fecha_inicio::date else NULL end),
				fecha_vencimiento=(case when p_fecha_vencimiento!='' then p_fecha_vencimiento::date else NULL end),
				precio=(case when p_precio!='' then to_number(p_precio, '999999.99') else NULL end)
				Where id=id_estacionamiento_empresa;

			End if;
			
			if array_length(p_vehiculo, 1)>0 then 
				for i in array_lower(p_vehiculo, 1) .. array_upper(p_vehiculo, 1) loop 
					p_id := p_vehiculo[i][1];
					p_vehiculo_id := p_vehiculo[i][2];
					p_flag_afiliacion := p_vehiculo[i][3];
					if p_id=0 Then
						insert into estacionamiento_vehiculos(vehiculo_id,estacionamiento_id,flag_afiliacion,estado,created_at)
						values (p_vehiculo_id,p_id_estacionamiento::int8,p_flag_afiliacion,'1',now());
					else
						update estacionamiento_vehiculos set
						flag_afiliacion=p_flag_afiliacion,
						updated_at=now()
						where id=p_id;
					end if;
				end loop;
			end if;
		end case;
	
	return 1;

/*EXCEPTION
	WHEN OTHERS THEN
        id_caja_ingreso:=-1;
	return id_caja_ingreso;
	*/
end;

$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
